-1
box_content=[[[1,2,4],[4,5,1]],[[2,3,1],[2,3,1]]]

def pop_a_message(box_content):
    send_message_index = random.randrange(len(box_content))
    receive_message_index = random.randrange(len(box_content) - 1) 
    if send_message_index >= receive_message_index: receive letter += 1    
    friend_message= random.randrange(len(send_message[0]))

我可以更改此功能,以便从send_message将要选择的功能中,特定的friend_message(例如索引 [0] 中的朋友消息)会比其他功能更频繁地出现吗?

4

1 回答 1

1

我认为您的问题可能类似于Generate random numbers with a given (numerical) distribution

正如 Sven Marnach 所建议的那样:

scipy.stats.rv_discrete可能是你想要的。您可以通过 values 参数提供您的概率。然后,您可以使用分布对象的 rvs() 方法生成随机数。

如果您将此应用于您的列表l(假设您希望获得 56 50% 的时间):

from scipy.stats import rv_discrete
l=[2,4,56,9]
vals = [l, (0.1, 0.2, 0.5, 0.2)]
custm = rv_discrete(name='custm', values=vals)
for i in l:
    yield generic.rvs(custm)

不确定最后一行,但是如果您阅读文档,您会找到正确的方法。

于 2013-02-22T14:23:10.990 回答