我有一组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)
该代码经过优化,以提高清晰度,而不是简洁,聪明或快速.