Supposons un fichier de données avec plus de 80 millions de uns et de zéros, générés aléatoirement.
A partir de ce fichier, nous voulons créer une liste d'entiers décimaux aléatoires.
C'est le plan pour faire cette conversion.
- Divisez les 80 millions de chiffres en groupes de 4 chiffres binaires.
- Convertissez chaque binaire à 4 chiffres en décimal.
- Ignorez toutes les valeurs décimales supérieures à 9.
Cela devrait entraîner une chaîne d'entiers aléatoires de 0 à 9
Voici l'inquiétude. Les 24 chiffres binaires qui comprennent les 6 groupes de 4 chiffres binaires qui correspondent aux valeurs 10 à 15 contiennent 17 uns et seulement 7 zéros. Ce déséquilibre affectera-t-il la distribution des entiers pairs et impairs, ou compromettra-t-il le caractère aléatoire de la dernière chaîne de chiffres décimaux?
Mise à jour: D'après les réponses publiées, il semble que la méthode énumérée ci-dessus soit correcte. Je suis d'accord avec cette conclusion. Cependant, je ne comprends toujours pas pourquoi la suppression de plus de deux fois plus de zéros de la chaîne binaire ne biaise pas le résultat vers moins de nombres impairs. Je cherche des explications.
Réponses:
Comptons et voyons. Par construction du fichier, toutes les chaînes de 4 bits sont également probables. Il existe 16 chaînes de ce type. Les voici:
Votre procédure jette les chaînes 10 à 15. Donc, dans les cas que vous utilisez réellement, vous choisirez 0 à 9, chacun étant également probable, comme vous le souhaitez. Et nous savons que les chiffres décimaux générés sont indépendants les uns des autres car chacun utilise une chaîne distincte de 4 bits et tous les bits sont indépendants. Votre procédure constitue un simple type d' échantillonnage de rejet .
la source
Il n'y a pas de biais puisque vous simulez simplement certaines valeurs qui sont ignorées et toutes les valeurs, y compris celles qui sont conservées, sont générées avec la même probabilité:
Le code R pour le graphique ci-dessus est
la source