有实施的讨论Fisher–Yates
洗牌这里.基本上,你需要一个不同的范围Discrete_Random
在每一次迭代中,如图所示这里 ; Float_Random
如A.5.2(50),注16所述,是另一种选择.如果偏差不重要,这个例子就足够了.
在任何情况下,混洗都是O(n),但是选择可以是O(1).
附录:创建集合的复杂性取决于实现.例如,Containers.Hashed_Sets,A.18.8(88/2)和Containers.Ordered_Sets,A.18.9(116/2).