n
確率の合計が1になる確率のリストを生成したいと思います。リストは固定サイズですが、任意に大きくすることができます。、、、、などのn
可能性があります。これはある種の計算上の課題であり、これを行うための最善の方法は1つではない可能性があることを認識していますが、合理的なアプローチの提案を喜んでいただければ幸いです。111
2
10
14
100
2 に答える
4
これを行うための最良の方法は、目的のサイズの乱数のリストを生成し、すべての数値を加算して、すべての数値を合計で割ることです。
randlist = [randon.random() for i in range(n)]
total = sum(randlist)
randlist = [i/total for i in randlist]
于 2012-11-27T10:14:28.407 に答える
1
Smetterleenに似ていますが、おそらく少し効率的です。
import random
def generate(n):
unnormalised = [random.random() for _ in range(n)]
s = sum(unnormalised)
normalised = map(lambda x: x/s, unnormalised)
return normalised
これらのどちらも必ずしも正確に1になるわけではないことに注意してください。
>>> sum(generate(4))
1.0
>>> sum(generate(4))
1.0
>>> sum(generate(4))
1.0000000000000002
>>> sum(generate(4))
0.9999999999999999
>>> sum(generate(4))
1.0
于 2012-11-27T10:21:59.527 に答える