11 votos

¿Esto introducirá sesgo en lo que debería ser números aleatorios?

Asumir un archivo de datos con más de 80 millones de unos y ceros, generado aleatoriamente.

A partir de este archivo, se desea crear una lista de azar enteros decimales.

Este es el plan para hacer esta conversión.

  1. Divida a los 80 millones de dígitos en grupos de 4 dígitos binarios.
  2. Convertir cada 4 dígitos binarios a decimales.
  3. Deseche todos los valores decimales mayores que 9.

Esto debe resultar en una cadena de enteros aleatorios del 0 al 9

Aquí es la preocupación. El 24 de dígitos binarios que componen el 6 grupos de 4 dígitos binarios que corresponden a los valores de 10 a 15 contienen 17 queridos y a sólo 7 ceros. Será este desequilibrio afecta a la distribución de incluso frente enteros impares, o comprometer la aleatoriedad de la final de la cadena de dígitos decimales de alguna manera?

Actualización: a partir De las respuestas publicadas, parece que el método enumeradas anteriormente es el sonido. Estoy de acuerdo con esa conclusión. Sin embargo, yo todavía no entiendo por qué la eliminación de más de dos veces como muchos, como el de los ceros de la cadena binaria de no sesgar los resultados hacia un menor número de números impares. Busco explicaciones.

19voto

avid Puntos 161

Vamos a contar y ver. Por la construcción del archivo, todos de 4 cadenas de bits son igualmente probables. Hay 16 cadenas de este tipo. Aquí están:

 0. 0000
 1. 0001
 2. 0010
 3. 0011
 4. 0100
 5. 0101
 6. 0110
 7. 0111
 8. 1000
 9. 1001
10. 1010
11. 1011
12. 1100
13. 1101
14. 1110
15. 1111

Su procedimiento de lanza de cadenas de 10 a 15. Así, en los casos en que se utilice, usted va a ser la elección del 0 al 9, cada uno de los cuales es igualmente probable, como se desee. Y sabemos que el generado dígitos decimales son independientes el uno del otro, porque cada uno usa una separada de la cadena de 4 bits y todos los bits son independientes. El procedimiento constituye una simple especie de rechazo de muestreo.

4voto

Lev Puntos 2212

Ningún sesgo ya que usted sólo simula algunos valores que son descartadas y todos los que se mantienen incluidos los valores se generan con la misma probabilidad:enter image description here

El código de R para el gráfico anterior es

generza=matrix(sample(0:1,4*1e6,rep=TRUE),ncol=4)
uniz=generza[,1]+2*generza[,2]+4*generza[,3]+8*generza[,4]
barplot(hist(uniz[uniz<10],breaks=seq(-0.5,9.5,le=11))$counts,col="steelblue")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X