Angenommen, eine Datendatei mit mehr als 80 Millionen Einsen und Nullen wird zufällig generiert.
Aus dieser Datei möchten wir eine Liste von zufälligen Dezimalzahlen erstellen.
Dies ist der Plan für diese Konvertierung.
- Teilen Sie die 80 Millionen Ziffern in Gruppen von 4 Binärziffern ein.
- Konvertieren Sie jede 4-stellige Binärdatei in eine Dezimalzahl.
- Verwerfen Sie alle Dezimalwerte größer als 9.
Dies sollte zu einer Folge von zufälligen ganzen Zahlen von 0 bis 9 führen
Hier ist die Sorge. Die 24 Binärziffern, die die 6 Gruppierungen von 4 Binärziffern umfassen, die den Werten 10 bis 15 entsprechen, enthalten 17 Einsen und nur 7 Nullen. Wird dieses Ungleichgewicht die Verteilung von geraden und ungeraden ganzen Zahlen beeinflussen oder die Zufälligkeit der letzten Folge von Dezimalstellen in irgendeiner Weise beeinträchtigen?
Update: Aus den Antworten geht hervor, dass die oben aufgezählte Methode solide ist. Ich stimme dieser Schlussfolgerung zu. Ich verstehe jedoch immer noch nicht, warum das Entfernen von mehr als doppelt so vielen Einsen wie Nullen aus der Binärzeichenfolge das Ergebnis nicht auf weniger ungerade Zahlen ausrichtet. Ich suche Erklärungen.
quelle
Antworten:
Lass uns zählen und sehen. Durch die Erstellung der Datei sind alle 4-Bit-Zeichenfolgen gleich wahrscheinlich. Es gibt 16 solcher Zeichenfolgen. Hier sind sie:
Ihre Prozedur wirft die Zeichenfolgen 10 bis 15 aus. In den Fällen, die Sie tatsächlich verwenden, wählen Sie 0 bis 9, von denen jede wie gewünscht gleich wahrscheinlich ist. Und wir wissen, dass die generierten Dezimalstellen unabhängig voneinander sind, da jede eine separate Zeichenfolge von 4 Bits verwendet und alle Bits unabhängig sind. Ihr Verfahren stellt eine einfache Art der Ablehnungsstichprobe dar .
quelle
Es gibt keine Verzerrung, da Sie nur einige verworfene Werte simulieren und alle Werte, einschließlich der beibehaltenen, mit der gleichen Wahrscheinlichkeit generiert werden:
Der R-Code für das obige Diagramm lautet
quelle