sábado, enero 08, 2011
Midiendo el azar de nuestro sistema
No hay azar en nuestro ordenador. Es una ilusión que funciona, pero no verdadero azar.
Por eso es conveniente probar hasta que punto nos podemos fiar de las funciones RANDOM.
En el programa de la incluimos iostream para poder utilizar el
cout.
stdlib para la función srand() y time para poder pasarle la hora actual a srand() como semilla.
Iniciamos una secuencia de números aleatorios con SRAND. Luego se invoca RAND las veces que haga falta.
El valor aleatorio máximo que se puede generar es la constante RAND_MAX.
Obtener un valor entre 0 y un entero N determinado:
valor = rand() % (limiteSuperior + 1)
Valor entre límite inferior y límite superior:
valor = rand() % (limiteSuperior - limiteInferior + 1) + limiteInferior
Valor entre 0 y 1:
Hacemos una conversión a float:
valor = (float) rand() / RAND_MAX
El programa de arriba toma valores entre 1 y 2. Cuando se llega a 10⁹ ocurrencias para y muestra los resultados:
Ya se ve que consigue resultados muy cercanos al teórico 50%.
Por cierto, para que muestre el error en formato "natural" en lugar de en notación científica he tenido que utilizar:
cout(setf(ios_base::fixed)
Para forzar notación científica diremos ios_base::scientific
Saludos.
Etiquetas:
cpp,
programacion
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario