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\'])
如何避免同一选择连续重复多次?或我如何设置条件以使某个特定选择仅在选择了某些其他选择之后才会出现?还是在这方面有一个更适合我需要的模块?     

解决方法

        最简单的解决方案可能是构造一个长度为
k
usedQueue
(其中k是允许重复选择之前的选择数。)选择一个选项时,将其从原始列表中删除并将其放在
usedQueue
中。然后,如果是ѭ4pop,则将其弹出回到阵列中。 如前所述,这大大降低了算法的随机性。也就是说,它确实有实际用途(请查看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)
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...