私はthis重み付き乱数発生器を使用しました。欠陥乱数発生器?
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
は、次のように:
# 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)
私は7
、8
、9
、10
結果にかなり頻繁に参照してください。
これは確かに確率理論に妥当であるといういくつかの証拠または保証はありますか?
?私たちに見せることのできるヒストグラムがありますか? –
義務:http://xkcd.com/221/ – orlp
@OliCharlesworth重要なのは証明です。ヒストグラムはこれを証明するのに十分ですか? – xralf