问题
我有 N 个不同类型的项目均匀地分布到由类型确定的自己的桶中。我想创建一个新列表:
- 从每个桶中随机挑选
- 不会连续两次从同一个桶中挑选
- 每个桶必须(如果可能)在最终列表中具有相同数量的表示
- 不使用特定语言的库(不容易用另一种语言实现)
例子
我有 4 种不同类型的 12 件物品,这意味着我有 4 个桶:
Bucket A - [a, a, a]
Bucket B - [b, b, b]
Bucket C - [c, c, c]
Bucket D - [d, d, d]
我想要的是
随机分布的上述项目列表,没有任何重复的字符,大小在 1 到 N 之间。
12 Items: a, d, c, a, b, a, c, d, c, b, d, b
8 Items: c, a, d, a, b, d, c, b
4 Items: c, b, d, a
3 Items: b, c, a (Skipping D)
我试图用一个生成随机整数的while循环来做到这一点,直到下一个桶不等于以前使用的桶,但这似乎效率低下,并希望其他人可能有更好的算法来解决这个问题。