如何在Python中向列表添加随机权重?

2024-06-02 09:36:43 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个我正在投资的国家的列表:

Angola  Croatia  Denmark  Germany ...

我如何将权重随机分配到这些国家,这些国家的权重加起来都是100%,基本上-我正在寻找对我的投资进行优化测试:

^{pr2}$

随机化背后的逻辑很简单,但我想知道是否有一种简单的方法可以做到这一点?我现在的逻辑是,给所有随机数分配一个随机数,取所有随机数之和,取分配数除以总数。在

如何正确计算这些权重,并使用Pandas DataFrame添加具有这些权重的新行?我该如何设置一个for all语句?在


Tags: 方法dataframepandas列表for逻辑国家all
1条回答
网友
1楼 · 发布于 2024-06-02 09:36:43

不使用numpypandas就可以实现这一点。您可以简单地使用random包生成N个随机数,然后将它们规范化(将每个数字除以所有生成的数字的总和)。这将生成[0,1]间隔内的数字列表。如果需要将它们缩放到[0,100]区间,只需将这些数字乘以100。在

示例:

>>> import random
>>> n = 10
>>> weights = [random.random() for _ in range(n)]
>>> sum_weights = sum(weights)
>>> weights = [100*w/sum_weights for w in weights]
>>> print(weights)
[9.341865975454088,
 12.351871555212776,
 11.613836128975514,
 9.37242716105095,
 7.74809967908834,
 9.239611881353285,
 5.432249328415935,
 11.384334820466387,
 13.436859772362507,
 10.07884369762022]

相关问题 更多 >