Zufällige Ergebnisse in Excel

3

Vorbei an WorldBuilding wir spielen gerne mit Science-Fiction-Themen, darunter "Was wäre, wenn es mehr als zwei Geschlechter gäbe" (Beispiele Hier . Hier . Hier ). Alles gute saubere Spaß und, dachte ich, eine Chance für mich, meine Tabellenkalkulationsfähigkeiten zu verbessern (ich benutze Excel 2003).

Ich baute eine Kalkulationstabelle für ein Monte-Carlo-Modell mit drei Geschlechtern unter Verwendung von X- und Y-Chromosomen: M Ale (JJ), F weiblich (XX) und H Hermaphrodit (XY), gewöhnliche Mendelsche Erbschaft. Somit M-F wird immer H produzieren, M-H produziert 50% M und 50% H, F-H ähnlich und H-H produziert 25% M, 25% F und 50% H.

Ich habe 200 Einwohner gezüchtet und habe 256 Generationen gezüchtet. Außer eine Sache . Ich hatte erwartet, dass sich die Bevölkerung bei 50% H und 25% von M und F stabilisieren würde, aber ich bekomme konstant 54% H und nur 23% M und F Bei LibreOffice ist es weder vom Geschlecht der "Puffer" - Eltern (siehe unten) noch von der ursprünglichen Verteilung betroffen.

Die Tabelle ist verfügbar Hier (meine persönliche Website, natürlich übliche Haftungsausschlüsse) und ich habe es unten dokumentiert. Es sieht so aus, als ob meine zufälligen Funktionen funktionieren IF(RAND()>0.5 und CHOOSE(INT(4*RAND()+1) Ich bekomme nicht wie vorgesehen 50% und 25% zurück, aber ich weiß nicht, wie ich das direkt testen kann. Mache ich etwas falsch?

Code-Details

Ich verschlüssele M Ale als 1. F emale as 2 und H Hermaphrodit als 4 so dass ich einfach die beiden eltern hinzufügen kann. Die meisten Zellen (B6: IV205) berechnen die nächste Generation und enthalten (dies ist Zelle B6):

=CHOOSE (A5+A7,                        // sum of parents  
  -99,                                 // 1 can't happen  
  A6,                                  // 2 = MM = don't breed, copy old  
  4,                                   // 3 = MF -> H  
  A6,                                  // 4 = FF = don't breed, copy old  
  IF(RAND()>0.5,1,4),                  // 5 = MH -> M or H  
  IF(RAND()>0.5,2,4),                  // 6 = FH -> F or H  
  -99,                                 // 7 can't happen  
  CHOOSE(INT(4*RAND()+1),1,2,4,4)      // 8 = HH -> M or F or H or H  
 )  

Die erste Reihe von Sheet1 zeigt eine Generationszählung, die zweite, dritte und vierte Anzahl der "Geschlechter" in dieser Generation (dividiert durch 2, um einen Prozentsatz der Bevölkerung von 200 zu ergeben). Die Zeilen 5 und 206 stellen einen (Puffer-) Parent für die Zeilen 6 und 205 bereit. In Spalte A wird basierend auf dem Wert in A2 eine Grundgesamtheit erstellt.

Ich benutze bedingte Formatierungen, um Männer als blau, Frauen als rosa und Hermaphroditen als grün zu färben; Mit 25% Zoom und einer Spaltenbreite von 3 kann ich den gesamten Bereich auf meinem Monitor sehen. Auf Sheet2 zeichne ich die Populationen mit den Zeilen 2-3-4 von Sheet1 auf.

Details aller Zellen in Sheet1:

A1 "gen1"  
B1:IV1 ="g"&COLUMN()  // column title  
A2 50%  // initial hermaphrodite percentage  
B2:IV2 =COUNTIF(B6:B205,"=4")/2  // hermaphrodite percentage  
A3 ="M:"&COUNTIF(A6:A205,"=1")/2  
B3:IV3 =COUNTIF(B6:B205,"=1")/2  // male percentage  
A4 ="F:"&COUNTIF(A6:A205,"=2")/2  
B4:IV4 =COUNTIF(B6:B205,"=2")/2  // female percentage  
A5 4  // lower buffer parent  
B5:IV5 =A5  // echo buffer  
A6:A205 =IF(RAND()>$A$2,IF(RAND()>0.5,1,2),4)  // initial population  
B6:IV205 =CHOOSE(A5+A7,-99,A6,4,A6,IF(RAND()>0.5,1,4),IF(RAND()>0.5,2,4),-99,CHOOSE(INT(4*RAND()+1),1,2,4,4))  
A206 4  // upper buffer parent  
B206:IV206 =A206  // echo buffer  

Natürlich bin ich für Ratschläge zu allen Aspekten meiner bereit Opus .

NL_Derek
quelle

Antworten:

0

Ich vermute, dass dies kein Fehler in Excel ist, aber es ist korrekt (zumindest so richtig, wie es von einer zufälligen Chance ausgehen kann.)

Der Grund dafür liegt nicht an der Zufälligkeit, sondern an Ihrer Wahrscheinlichkeit innerhalb dieser Berechnung:

=CHOOSE (A5+A7,                        // sum of parents  
  -99,                                 // 1 can't happen  
  A6,                                  // 2 = MM = don't breed, copy old  
  4,                                   // 3 = MF -> H  
  A6,                                  // 4 = FF = don't breed, copy old  
  IF(RAND()>0.5,1,4),                  // 5 = MH -> M or H  
  IF(RAND()>0.5,2,4),                  // 6 = FH -> F or H  
  -99,                                 // 7 can't happen  
  CHOOSE(INT(4*RAND()+1),1,2,4,4)      // 8 = HH -> M or F or H or H  
 )  

Speziell deine sehr zuletzt Situation, HH -> M or F or H or H. Dies bedeutet, dass Sie eine 50% ige Chance haben, H zu erhalten, verglichen mit jeweils 25% für M oder F, falls wir das Ergebnis von a verwenden HH. Als solches eine Schräglage gegenüber H über M oder F sollte erwartet werden.

Ich vermute, wenn Sie diesen Teil ändern

CHOOSE(INT(3*RAND()+1),1,2,4)

Sie würden die Wahrscheinlichkeit sehen, die Sie waren erwarten , aber nicht unbedingt das, was richtig ist

Jonno
quelle
Du hast recht; Ich bekomme jetzt etwa 25-25-50%. Vielen Dank! Jetzt muss ich herausfinden, warum.
NL_Derek
Ihr letzter Satz ist richtig. Mein original Erwartung von 25-25-50% in der Bevölkerung scheint falsch gewesen zu sein. Meine Formulierung von CHOOSE(INT(4*RAND()+1),1,2,4,4) gibt mir 25-25-50% im Generation aber nicht in der Bevölkerung; Ihre Formulierung von CHOOSE(INT(3*RAND()+1),1,2,4) gibt mir 33-33-33% in der Generation und (entgegen meiner Erwartung) 25-25-50% in der Bevölkerung. Jetzt muss ich mich mit dieser Differenzierung der Bevölkerungsgeneration beschäftigen und herausfinden, was passiert. Ich habe deine Antwort als richtig markiert: Es ist kein Excel-Fehler, sondern ein NL_Derek-Fehler ;-)
NL_Derek