gpt4 book ai didi

python - 生成随机 |N|来自 ( 0 , 1 ) 上的均匀分布的值并将总和归一化为 Python 中的等于 1

转载 作者:行者123 更新时间:2023-12-04 08:09:21 26 4
gpt4 key购买 nike

这可能是一个重复的话题,但我在这个话题上有一个不同的问题,现有的答案对我没有帮助。
我想在我的 python 应用程序中从 (0,1) 的均匀分布中生成一些随机值,并将总和归一化为等于 1。
问题是生成值的总和不完全等于 1。在每组归一化随机值上,例如总和等于 0.999999999991.00000000056 .我尝试了一些技巧,但无法解决问题。这是我到目前为止所做的:

sum = 0
probs = []
for i in range(10):
probs += [random.uniform(0, 1)]

prob = np.array(probs)

for p in prob:
p /= prob.sum() # normalize
sum += p

print(sum)
有谁知道如何生成这些数字,使它们的总和正好等于 1?

最佳答案

总和不完全等于 1.0,因为浮点错误,与 numpy 或 python 无关。但是,您可以修改最后一个元素以解决该错误。喜欢:

probs = np.random.random(10)
probs = probs / probs.sum()
probs[-1] = 1 - probs[:-1].sum()
probs.sum()
>>>
1.0

关于python - 生成随机 |N|来自 ( 0 , 1 ) 上的均匀分布的值并将总和归一化为 Python 中的等于 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66058874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com