这听起来像是Numpy's numpy.random.choice() 及其p 参数的工作:
p : 1-D array-like, optional
The probabilities associated with each entry in a. If not given,
the sample assumes a uniform distribtion over all entries in a.
所以如果只有一个列表(其中一个元素既是每个元素的概率,又是要选择的元素本身,你可以这样做:
from numpy.random import choice
elementsAndProbabilities = [0.1, 0.2, 0.4, 0.2, 0.1]
randomElement = choice(elementsAndProbabilities, p=elementsAndProbabilities)
print randomElement
如果你有一个元素列表和每个元素的概率列表(单独),你可以这样做:
from numpy.random import choice
elements = ["first", "second", "third", "fourth", "fifth"]
probabilities = [0.1, 0.2, 0.4, 0.2, 0.1]
randomElement = choice(elements, p=probabilities)
print randomElement
现在,你说你想要的是 index,而不是元素,所以我们可以像这样得到索引:
from numpy.random import choice
probabilities = [0.1, 0.2, 0.4, 0.2, 0.1]
randomElement = choice(range(len(probabilities)), p=probabilities)
print randomElement