gpt4 book ai didi

algorithm - 在均匀大小的桶之间随机分布,不重复

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:41 27 4
gpt4 key购买 nike

问题

我有 N 种不同类型的元素,它们均匀地分布在它们自己的桶中,这些桶是由类型决定的。我想创建一个新列表:

  1. 从每个桶中随机挑选
  2. 不会连续两次从同一个桶中采摘
  3. 每个桶必须(如果可能)在最终列表中具有相同数量的表示
  4. 不使用特定语言的库(不容易用另一种语言实现)

例子

我有 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 循环来做到这一点,该循环生成随机整数,直到下一个桶不等于以前使用的桶,但这似乎效率低下,并希望其他人可能有更好的算法来解决这个问题.

最佳答案

您可以生成一个随机的桶列表,然后按顺序随机选择,当您从列表中选择时从列表中删除桶。当列表为空时,重新生成一个随机的桶列表,重复直到您选择所需数量的项目。

你能重复桶中的元素吗?那么,如果你第一次从桶 A 中选择第一个“a”,你能第二次选择它吗?这将改变解决方案。

关于algorithm - 在均匀大小的桶之间随机分布,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com