在随机列表生成中执行"没有2个相同的连续元素"

Fab*_*chi 2 python random algorithm rules list

我有一组4个字符串,并希望生成一个包含16个元素的列表,但是强制执行规则(或获得与强制执行此规则相同的结果),从而永远不会在结果列表中的两个连续位置重复相同的元素.

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

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

Eli*_*sky 6

伪码算法:

  1. 对于i in n(n是你想要的元素数量)
  2. 生成下一个元素
  3. 如果它与前一个元素相同,则重复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)
Run Code Online (Sandbox Code Playgroud)

此代码针对清晰度进行了优化,而不是简洁,聪明或速度.