J'ai utilisé this générateur de nombre aléatoire pondéré.Générateur de nombre aléatoire imparfait?
import random
def weighted_choice(weights):
totals = []
running_total = 0
for w in weights:
running_total += w
totals.append(running_total)
rnd = random.random() * running_total
for i, total in enumerate(totals):
if rnd < total:
return i
comme suit:
# The meaning of this dict is a little confusing, so here's the explanation:
# The keys are numbers and values are weights of its occurence and values - 1
# are weights of its disoccurence. You can imagine it like biased coins
# (except for 2 which is fair coin).
probabilities = { 0 : 1.0, 1 : 1.0, 2 : 0.5, 3 : 0.45, 4 : 0.4, 5 : 0.35,
6 : 0.3, 7 : 0.25, 8 : 0.2, 9 : 0.15, 10 : 0.1
}
numberOfDeactivations = []
for number in probabilities.keys():
x = weighted_choice([probabilities[number], 1 - probabilities[number]])
if x == 0:
numberOfDeactivations.append(number)
print "chance for ", repr(numberOfDeactivations)
Je vois assez souvent 7
, 8
, 9
, 10
dans le résultat.
Existe-t-il une preuve ou une garantie que cela est correct pour la théorie des probabilités?
Ce qui est "assez souvent"? Avez-vous un histogramme que vous pouvez nous montrer? –
Obligatoire: http://xkcd.com/221/ – orlp
@OliCharlesworth Important est la preuve. Histogramme est suffisant pour éprouver cela? – xralf