Pregunta

A modo de ejercicio que estoy escribiendo un programa para calcular las probabilidades de sacar 5 años mueren con el mismo número. La idea es conseguir el resultado a través de la simulación en lugar de las matemáticas simples sin embargo. Mi programa es la siguiente:

# rollFive.py

from random import *

def main():
    n = input("Please enter the number of sims to run: ")
    hits = simNRolls(n)
    hits = float(hits)
    n = float(n)
    prob = hits/n
    print "The odds of rolling 5 of the same number are", prob

def simNRolls(n):
    hits = 0
    for i in range(n):
        hits = hits + diceRoll()
    return hits


def diceRoll():
    firstDie = randrange(1,7,1)
    for i in range(4):
        nextDie = randrange(1,7,1)
        if nextDie!=firstDie:
            success = 0
            break
        else:
            success = 1
    return success

El problema es que la ejecución de este programa con un valor de n de 1 000 000 me da una probabilidad por lo general entre 0,0006 y 0,0008, mientras que mis matemáticas me hace creer que debería llegar a una respuesta más cerca de 0,0001286 (también conocido como (1/6) ^ 5).

¿Hay algo malo con mi programa? O estoy haciendo algún error básico con las matemáticas aquí? O podría encontrar mi resultado revierte más cerca de la respuesta correcta si yo fuera capaz de ejecutar el programa a través de iteraciones más grandes?

¿Fue útil?

Solución

La probabilidad de obtener un número particular cinco veces es (1/6) ^ 5, pero la probabilidad de obtener cinco números de la misma es de (1/6) ^ 4.

Hay dos maneras de ver esto.

En primer lugar, la probabilidad de obtener todos los de 1, por ejemplo, es (1/6) ^ 5, ya que sólo hay una manera de salir de seis a conseguir un 1. multiplican por cinco dados, y se obtiene (1/6 ) ^ 5. Pero, puesto que hay seis números posibles de conseguir lo mismo, entonces hay seis maneras de tener éxito, que es 6 ((1/6) ^ 5) o (1/6) ^ 4.

Visto de otro modo, no importa lo que el primer rollo da, por lo que excluye. Entonces tenemos que coincida con ese número con los cuatro rollos restantes, la probabilidad de que es (1/6) ^ 4.

Otros consejos

Su matemáticas es incorrecto. La probabilidad de obtener cinco dados con el mismo número es 6*(1/6)^5 = 0.0007716.

Es muy sencillo, existen posibles resultados 6 ** 5 de rodadura 5 dados, y sólo 6 de esos resultados son exitosos, por lo que la respuesta es 6.0 / 6 ** 5

Creo que su probabilidad esperada está mal, como usted ha declarado el problema. (1/6) ^ 5 es la probabilidad de sacar algunas específicos número 5 veces en una fila; (1/6) ^ 4 es la probabilidad de sacar cualquier Número 5 veces seguidas (debido a que el primer rollo es siempre "éxito" - es decir, el primer rollo siempre resultará en un número ).

>>> (1.0/6.0)**4
0.00077160493827160479

Comparación de ejecutar su programa con 1 millón de iteraciones:

[me@host:~] python roll5.py 
Please enter the number of sims to run: 1000000
The odds of rolling 5 of the same number are 0.000755
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top