Tentativo problema: La probabilità che uno dei due dadi abbia un valore superiore a un terzo dado.Python casuale non funziona come
Problema: Per qualche ragione, quando uso il modulo random
pitone (in particolare il metodo di esempio), che finisce con un risultato diverso (e corretto) da quando quando uso NumPy. Ho incluso i risultati in fondo. L'esecuzione ripetuta del codice produce risultati simili. Qualche idea, perché il metodo random.sample
e lo numpy.random.random_integers
hanno risultati diversi anche se hanno la stessa funzione?
import numpy as np
import random
random_list = []
numpy_list = []
n= 500
np_wins = 0
rand_wins = 0
for i in range(n):
rolls = random.sample(range(1,7), 3)
rand_wins += any(rolls[0] < roll for roll in rolls)
rolls = np.random.random_integers(1, 6, 3)
np_wins += any(rolls[0] < roll for roll in rolls)
print "numpy : {}".format(np_wins/(n * 1.0))
print "random : {}".format(rand_wins/(n * 1.0))
Risultato:
Press ENTER or type command to continue
numpy : 0.586
random : 0.688
Buona spiegazione dei problemi e +1 per identificare la sezione di campionamento relativamente piccola. Vale la pena notare che numpy.random.random_integers() darebbe il risultato corretto, affrontando il problema n. 2, mentre aumentando il campione a n = 100000 si allevierebbe il problema n. 1. –