Ada中间隔中的唯一随机数列表

cha*_*rly 5 random algorithm ada

很抱歉打扰你我知道这个问题已经被问了很多但是从来没有跟Ada ...我想知道Ada标准库中是否有一种方法可以生成一个独特的随机数列表(你永远不会选择两次) O(n)中的相同数字在某种程度上,Ada中是否存在Knuth-Fisher-Yates算法的实现?

tra*_*god 5

有实施的讨论Fisher–Yates洗牌这里.基本上,你需要一个不同的范围Discrete_Random在每一次迭代中,如图所示这里 ; Float_RandomA.5.2(50),注16所述,是另一种选择.如果偏差不重要,这个例子就足够了.

在任何情况下,混洗都是O(n),但是选择可以是O(1).

附录:创建集合的复杂性取决于实现.例如,Containers.Hashed_Sets,A.18.8(88/2)Containers.Ordered_Sets,A.18.9(116/2).