Zufällige Ergebnisse in Excel

900
NL_Derek

Bei WorldBuilding spielen wir 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 von drei Geschlechtern unter Verwendung von X- und Y-Chromosomen: M ale (YY), F emale (XX) und H ermaphrodite (XY) mit gewöhnlicher Mendelscher Vererbung. So produziert MF immer H, MH 50% M und 50% H, FH ähnlich und HH 25% M, 25% F und 50% H.

Ich habe 200 Einwohner gezüchtet und habe 256 Generationen gezüchtet . Die Ergebnisse sehen vernünftig aus, abgesehen von einer Sache . Ich hatte erwartet, dass sich die Bevölkerung bei 50% H und jeweils 25% von M und F stabilisieren würde, aber ich bekomme konstant 54% H und nur 23% M und F. Dies scheint kein Excel-Fehler zu sein, ich bekomme ähnliche Ergebnisse Bei LibreOffice ist es weder vom Geschlecht der "Puffer" - Eltern (siehe unten) noch von der ursprünglichen Verteilung betroffen.

Die Tabelle ist hier verfügbar (meine persönliche Website, natürlich übliche Ausschlussklauseln) und ich habe sie unten dokumentiert. Es sieht so aus, als würden meine zufälligen Funktionen IF(RAND()>0.5und CHOOSE(INT(4*RAND()+1)50% und 25% nicht wie beabsichtigt zurückgeben, aber ich weiß nicht, wie ich das direkt testen kann. Mache ich etwas falsch?

Code-Details

Ich codiere MAle als 1, FEmale as 2und HErmaphrodite als, 4damit 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 Tabelle1 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 meines Werkes offen .

3

1 Antwort auf die Frage

0
Jonno

Ich vermute, dass dies kein Fehler in Excel ist, aber es ist korrekt (zumindest so richtig, wie es auf einer zufälligen Chance beruhen 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 Ihre letzte 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 kann ein Skew Richtung sollte H über M oder F zu erwarten.

Ich vermute, wenn Sie diesen Teil in ändern

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

Sie würden die Wahrscheinlichkeit sehen, die Sie erwartet hatten, aber nicht unbedingt das, was richtig ist (ich habe die Rechnung nicht wirklich gemacht.)

Du hast recht; Ich bekomme jetzt etwa 25-25-50%. Vielen Dank! Jetzt muss ich herausfinden, warum (diesen Raum beobachten, ich melde mich zurück). NL_Derek vor 8 Jahren 0
Ihr letzter Satz ist richtig. Meine ursprüngliche 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 bis 50% in der 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 Generation Population. Jetzt muss ich mich mit dieser Unterscheidung zwischen den Bevölkerungsgenerationen 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 vor 8 Jahren 0