使用权重生成重复项(python)
我有以下清单:使用权重生成重复项(python),python,list,random,duplicates,Python,List,Random,Duplicates,我有以下清单: priority=['Emergency','High','Normal','Low'] 我需要在上面的列表中生成一个包含15000个值的列表,每个值的频率分别为10%、20%、30%、40%。有人能告诉我怎么做吗?您可以使用random.random(),并根据随机数的范围分配索引 In [21]: priority=['Emergency','High','Normal','Low'] In [22]: idx = lambda x: 0 if x < 0.1 el
priority=['Emergency','High','Normal','Low']
我需要在上面的列表中生成一个包含15000个值的列表,每个值的频率分别为10%、20%、30%、40%。有人能告诉我怎么做吗?您可以使用random.random(),并根据随机数的范围分配索引
In [21]: priority=['Emergency','High','Normal','Low']
In [22]: idx = lambda x: 0 if x < 0.1 else (1 if x < 0.3 else (2 if x < 0.6 else 3))
In [23]: import random
In [24]: [priority[idx(random.random())] for _ in range(15000)]
Out[24]:
['Normal',
'High',
'Emergency',
'Emergency',
'High',
.
.
[21]中的:优先级=['Emergency'、'High'、'Normal'、'Low']
在[22]中:如果x<0.1,则idx=lambda x:0(如果x<0.3,则为1(如果x<0.6,则为2))
在[23]中:导入随机
在[24]中:[priority[idx(random.random())]for uu在范围内(15000)]
出[24]:
[“正常”,
"高",,
“紧急情况”,
“紧急情况”,
"高",,
.
.
在上面,我根据列表中元素的顺序生成索引,因此对于0到0.1,它是第一个(10%),0.1到0.3,它是第二个(0.3-0.1将覆盖20%),依此类推。最简单的方法可能是使用numpy.random函数
import numpy as np
priority=['Emergency','High','Normal','Low']
b = np.random.choice(priority, 150, replace=True, p=[0.1, 0.2, 0.3, 0.4])
print(b)
内置做同样的事情,但它不可用我已经编辑了问题,我的坏:)工作完美,谢谢:)