Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用权重生成重复项(python)_Python_List_Random_Duplicates - Fatal编程技术网

使用权重生成重复项(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)

内置做同样的事情,但它不可用我已经编辑了问题,我的坏:)工作完美,谢谢:)