如何使用种子对数组进行混洗,从而在向数组添加额外项目时保持元素序列一致



注意:这个问题可以应用于任何编程语言,例如Python或JavaScript


如何用种子决定性地搅乱元素数组,但在以下情况下有保证:

  • 如果在混洗之前向数组中添加一个附加元素,则原始元素的顺序与混洗原始数组时保持相同

我可能可以用示例更好地解释这一点

  • 假设数组[a,b,c]与种子123混洗,这导致输出[c,a,b]
  • 如您所见,b在a之后,a在c之后
  • 我们将一个额外的元素添加到数组的末尾[a,b,c,d],并使用种子123进行混洗
  • 这一次,b必须仍然在a之后,a必须仍然在c之后
  • 输出可能是[c,a,d,b]或[d,c,a,b],但不能是[b,a,c,d]
  • 如果我们继续增加更多的元素,同样的道理也必须适用

编辑:如果数学上可行,混洗列表中每个元素的位置都应该是完全随机的(某些位置不应该对某个元素有偏差(。

(我对python很陌生(

你在末尾添加附加元素,但你也可以在洗牌后将其插入随机位置

import random
x = ['a','b','c']
random.Random(123).shuffle(x)
print(x)
x = ['a','b','c']
random.Random(123).shuffle(x)
x.insert(random.randint(0,len(x)),'d')
print(x)

但如果添加更多元素,这将成为问题。

最新更新