在随机列表生成中强制执行“ no 2 same contiguous elements”

我有一组4个字符串,想要生成一个16个元素的列表,但是要强制执行该规则(或获得与执行该规则相同的结果),以使在结果列表中的两个连续位置中永远不要重复相同的元素.

我几乎是Python的新手,我去检查了随机库中的不同方法,发现了许多不同且有用的方法来做类似的事情(random.shuffle几乎可以解决问题),但是没人能满足我的特殊需求.

我应该使用什么数据格式和什么方法?

解决方法:

伪码算法:

>对于n中的i(n是所需元素的数量)
>生成下一个元素
>如果与上一个元素相同,请重复2

使用random.choice从元素列表中随机选择一个元素.

这是概念证明Python代码:

import random
sources = ['a', 'b', 'c', 'd']      # you said 4 strings
result = [random.choice(sources)]

while len(result) < 16:             # you said you need 16 elements    
    elem = random.choice(sources)
    if elem != result[-1]:
        result.append(elem)

该代码经过优化,以提高清晰度,而不是简洁,聪明或快速.

上一篇:vue中使用less


下一篇:关于用IOU虚拟机开始界面无法显示IP及ifconfig显示问题的解决办法