Python 2.7 使用python生成随机单词

Python 2.7 使用python生成随机单词,python-2.7,random,Python 2.7,Random,我有一张单子 count=100 list = ['apple','orange','mango'] 对于以上使用随机函数的计数,是否可以选择40%的时间苹果,30%的时间橙色和30%的时间芒果 例如: for the count=100, 40 times apple, 30 times orange and 30 times mango. 此选择必须随机进行最简单的方法是按所需比例构建一个列表,然后将其洗牌 >>> import random >>&

我有一张单子

count=100    
list = ['apple','orange','mango']
对于以上使用随机函数的计数,是否可以选择40%的时间苹果,30%的时间橙色和30%的时间芒果

例如:

for the count=100, 40 times apple, 30 times orange and 30 times mango.

此选择必须随机进行

最简单的方法是按所需比例构建一个列表,然后将其洗牌

>>> import random
>>> result = ['apple'] * 40 + ['orange'] * 30 + ['mango'] * 30
>>> random.shuffle(result)
编辑新要求,即计数实际为1000000:

>>> count = 1000000
>>> pool = ['apple'] * 4 + ['orange'] * 3 + ['mango'] * 3
>>> for i in xrange(count):
        print random.choice(pool)
一种较慢但更通用的替代方法是:


根据关于的问题的答案,您可以使用获得比使用
random快20倍的代码。选择

from numpy.random import choice

sample = choice(['apple','orange','mango'], p=[0.4, 0.3, 0.3], size=1000000)

from collections import Counter
print(Counter(sample))
产出:

Counter({'apple': 399778, 'orange': 300317, 'mango': 299905})
更不用说,它实际上比“按要求的比例构建一个列表,然后将其洗牌”更容易


此外,shuffle总是能生产出40%的苹果、30%的橙子和30%的芒果,这与“根据离散概率分布生产一百万个水果样本”的说法不同。后者是
选择
解决方案所做的(以及
对分
)。如上所述,当使用
numpy

时,大约有40%的苹果等,但是如果计数=1000000,那么列表大小将增加,实际上我试图在一个月内模拟一个数据集,如每天1000000行,如果我用同样的逻辑会好吗?这个概念是非常普遍的,有很多方法可以建立它。我编辑了答案,以展示如何使用random.choice()从元素比例适当的池中一次选择一个元素。您也可以进行累积分布,并使用对分进行选择,但对于您描述问题的方式来说,这样做太过分了。
Counter({'apple': 399778, 'orange': 300317, 'mango': 299905})