Załóżmy, że plik danych ma ponad 80 milionów zer i zer, losowo generowanych.
Z tego pliku chcemy utworzyć listę losowych liczb całkowitych dziesiętnych.
Taki jest plan przeprowadzenia tej konwersji.
- Podziel 80 milionów cyfr na grupy 4 cyfr binarnych.
- Konwertuj każdy 4-cyfrowy plik binarny na dziesiętny.
- Odrzuć wszystkie wartości dziesiętne większe niż 9.
Powinno to dać ciąg liczb losowych od 0 do 9
Oto troska. 24 cyfry binarne, które składają się z 6 grup 4 cyfr binarnych, które odpowiadają wartościom od 10 do 15, zawierają 17 jedynek i tylko 7 zer. Czy ta nierównowaga wpłynie na rozkład liczb całkowitych parzystych i nieparzystych, czy w jakikolwiek sposób wpłynie na losowość końcowego ciągu cyfr dziesiętnych?
Aktualizacja: z opublikowanych odpowiedzi wydaje się, że powyższa metoda jest poprawna. Zgadzam się z tym wnioskiem. Nadal jednak nie rozumiem, dlaczego usunięcie więcej niż dwa razy więcej zer od ciągu binarnego nie wpływa na wynik w kierunku mniejszej liczby nieparzystych. Szukam wyjaśnień.
źródło
Odpowiedzi:
Policzmy i zobaczmy. Dzięki konstrukcji pliku wszystkie ciągi 4-bitowe są jednakowo prawdopodobne. Istnieje 16 takich ciągów. Tutaj są:
Twoja procedura wyrzuca ciągi od 10 do 15. Tak więc w przypadkach, których faktycznie używasz, wybierzesz od 0 do 9, z których każdy jest równie prawdopodobny, jak chcesz. Wiemy, że generowane cyfry dziesiętne są od siebie niezależne, ponieważ każdy używa osobnego ciągu 4 bitów, a wszystkie bity są niezależne. Twoja procedura stanowi prosty rodzaj próbkowania odrzucenia .
źródło
Nie ma uprzedzeń, ponieważ po prostu symulujesz niektóre wartości, które są odrzucane, a wszystkie wartości, w tym te, które są przechowywane, są generowane z takim samym prawdopodobieństwem:
Kod R dla powyższego wykresu to
źródło