目前我正在开发一个项目,我需要用Python编写代码,但偶然发现了一些障碍。我有一份包含692件物品(库存单位)的excel表及其相应的销售数字。这些物品按顺序从大多数销售到最少销售。我计算了每个项目的概率和累积概率,如下图1和图2所示:
基于累积概率和以下公式:= INDEX(A $ 2:A $ 721; COUNTIF(H $ 2:H $ 721;“< =”& RAND())+ 1)
从692个项目中随机选择20个项目以生成订单拣配清单,如下图所示:
基本上我想在Python中做同样的事情。因此,基于它们的概率从大列表中选择多个项目。
我找到了以下代码,但不确定如何使用它:
import random
def random_pick(some_list, probabilities):
x = random.uniform(0, 1)
cumulative_probability = 0.0
for item, item_probability in zip(some_list, probabilities):
cumulative_probability += item_probability
if x < cumulative_probability: break
return item
如果有人能就如何实现这一目标给我一些指示,那就太好了。提前谢谢!
答案 0 :(得分:2)
使用random.choices并给它一些概率:
<Target Name="NLogTransform" AfterTargets="PipelineCopyAllFilesToOneFolderForMsdeploy">
<Message Text="NLog file transform according to NLog.WebDeploy - TEST.config" Importance="high" />
<TransformXml Source="NLog.config"
Transform="NLog.WebDeploy - TEST.config"
Destination="$(_PackageTempDir)\NLog.config" />
</Target>
输出:
from collections import Counter
from random import choices
data = [1,2,3,4]
prob = [1,1,8,1] # 3 about 8 times more likely to being choosen then 1,2 or 4
c = Counter(choices(data,prob,k=1000)) # generate 1000 and count
print(c)