【发布时间】:2021-09-03 19:08:21
【问题描述】:
注意:这个问题可以适用于任何编程语言,例如 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]。
- 如果我们继续添加更多元素,也必须如此。
编辑:如果在数学上可能的话,洗牌列表中每个元素的位置应该是完全随机的(某些位置不应该偏向于某个元素)。
【问题讨论】:
标签: arrays random shuffle seed deterministic