选择不重复的随机数字块

时间:2021-04-05 15:46:11

标签: random unique

我有一个从 1 到 100 的数字列表。我需要选择一个随机大小的数字块。 例如,第一次选择数字 5 到 21 第二次选择数字 50 到 66 继续选择一组数字,直到选择了所有数字,即我覆盖了整个范围(即 100)。数字不应在任何块中重复,这意味着范围应该是唯一的。

我需要一个与特定编程语言无关的通用算法。

1 个答案:

答案 0 :(得分:0)

  • 将您的列表切成随机大小的块(选择一个随机大小;将其切掉;重复直到列表为空)。
  • 随机洗牌块(Fisher-Yates)
  • 按洗牌顺序返回块

任何“随机但不重复”的算法的答案总是“洗牌”。