Python的random.choice()函数 - 怎么从来没有在连续两个选择或接近彼此

比方说,我有

mychoice = random.choice(['this is random response 1','this is random response 2', 'this is random response 3', 'and 4', 'and so on'])

我怎样才能避免连续多次被不止一次同样的选择? 或者,我怎么能我可以设置一个条件,使已被选定的其他选择一定数量后,特定选择只出现? 还是有一个模块更适合我在这方面的需求?

--------------解决方案-------------

最简单的解决方案可能会构造一个usedQueue长度k (其中k是选择的数量允许后再做选择复读。)当你选择一个选项,从原来的名单中删除,并把它放在usedQueue 。 然后,如果usedQueue.length > k ,弹出一回到您的数组。

如前所述,这显著降低你的算法的随机性。 这就是说,它确实有实际用途(看看iTunes中。)

实施例实施确保两次出现同一项目之间的最小距离:

def choice_gen(choices, min_dist):
last_choices = collections.deque(maxlen=min_dist)
choices = set(choices)
while 1:
c = random.choice(list(choices - set(last_choices)))
last_choices.append(c)
yield c

这个程序选择和打印从MYLIST随机选择,无需更换,直到所有的选择都已用尽。

index = range(len(mylist))
while len(index) > 0:
i = random.choice(index)
print mylist[i]
index.pop(i)

分类:蟒蛇 时间:2015-03-15 人气:6
本文关键词: 蟒蛇,随机的,模块
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.305 (s). 10 q(s)