Suponga un archivo de datos con más de 80 millones de unos y ceros, generados aleatoriamente.
A partir de este archivo, queremos crear una lista de enteros decimales aleatorios.
Este es el plan para hacer esta conversión.
- Divida los 80 millones de dígitos en grupos de 4 dígitos binarios.
- Convierta cada binario de 4 dígitos a decimal.
- Descarte todos los valores decimales mayores que 9.
Esto debería dar como resultado una cadena de enteros aleatorios de 0-9
Aquí está la preocupación. Los 24 dígitos binarios que comprenden las 6 agrupaciones de 4 dígitos binarios que corresponden a los valores 10 a 15 contienen 17 unidades y solo 7 ceros. ¿Este desequilibrio afectará la distribución de los enteros pares frente a los impares, o comprometerá la aleatoriedad de la cadena final de dígitos decimales de alguna manera?
Actualización: De las respuestas publicadas, parece que el método enumerado anteriormente es sólido. Estoy de acuerdo con esa conclusión. Sin embargo, todavía no entiendo por qué eliminar más del doble de ceros de la cadena binaria no sesga el resultado hacia menos números impares. Busco explicaciones.
fuente
Respuestas:
Vamos a contar y ver. Mediante la construcción del archivo, todas las cadenas de 4 bits son igualmente probables. Hay 16 cadenas de este tipo. Aquí están:
Su procedimiento arroja las cadenas del 10 al 15. Por lo tanto, en los casos que realmente usa, elegirá del 0 al 9, cada uno de los cuales es igualmente probable, según lo deseado. Y sabemos que los dígitos decimales generados son independientes entre sí porque cada uno usa una cadena separada de 4 bits y todos los bits son independientes. Su procedimiento constituye un tipo simple de muestreo de rechazo .
fuente
No hay sesgo ya que simplemente simula algunos valores que se descartan y todos los valores, incluidos los que se mantienen, se generan con la misma probabilidad:
El código R para el gráfico anterior es
fuente