【问题标题】:Threshold to stop generating random unique things停止生成随机独特事物的阈值
【发布时间】:2017-07-28 09:01:59
【问题描述】:

给定种群大小 P,我必须生成 P 个随机但唯一的对象。对象是 X 个唯一无序对的无序列表。

我目前只是使用带有 T 的 while 循环尝试在放弃之前生成随机排序。当前 T = 某个常数。

所以我的问题是我应该在什么时候停止尝试生成更多独特的对象,即 T 的合理值。

例如:

1) 如果我有 3 个独特的对象,而我只需要一个,我可以尝试最多,例如4次

2) 但是如果我有 999 个独特的对象,而我只需要一个,我不想制作例如1000 次尝试

我正在处理的问题并不绝对需要每个唯一的排序。用户实际指定了数字,所以我想确定在什么时候说不再生成是不合理的。

我希望这是有道理的

如果不是,更一般的情况:

选择 N 个数字,在 T 的值是多少时,开始从可能的 N 中生成更多唯一的随机数变得非常困难。

我不确定 T 在两种情况下是否相同,但也许第二种情况足以满足我的需要。对于较小的 N 值,我需要一个相对较大的阈值,而对于较大的 N 值,我需要一个相对较小的阈值。

没关系,但这是一个基本的遗传算法。

【问题讨论】:

    标签: random numbers unique


    【解决方案1】:

    您是否要求诸如彩票/球选择之类的东西?为此,有一个众所周知的 shuffle 算法 - Fisher–Yates-Knuth shuffle

    【讨论】:

    • 很有趣,但我实际上是在生成具有非重复数字的随机对,即我从 10 个唯一数字中挑选并将它们放入 5 对中,没有顺序。从那时起,我在想也许我应该使用概率来确定我的数字,即能够生成另一组对并在低于某个阈值时停止的概率。但我真的不知道如何确定这一点
    • @ovg 您如何阻止它仍然有点不清楚。你能提供伪代码吗?在使用 FYK shuffle 时,通常将对象(在您的情况下为对)保留在某种结构中,并且只是对索引进行洗牌,基本上是整数数组
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2014-03-12
    • 2017-06-14
    • 1970-01-01
    • 2010-12-30
    • 2020-04-25
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多