Ala*_*lan 6 random algorithm set
我很想知道生成随机整数R的最佳方法是什么,它不在一组提供的整数(R∉N)中.我可以想到几种方法,但我想知道你们都在想什么.
dei*_*nst 12
设N是整个集合的大小,让K为排除集合的大小.
我取决于您采样的集合的大小.如果排除的集合远小于整个范围,则只需选择一个随机数,如果它在排除的集合中,则再次选择.如果我们将排除的集合保留在哈希表中,则每次尝试都可以在O(1)时间内完成.
如果排除的集合很大,请在一组大小(N - K)中选择一个随机数R,并将该选项输出为非排除元素的成员.如果我们只将空洞存储在以随机数的值键入的哈希表中,我们可以在一个样本中及时生成O(1).
截止点将取决于(N - K)/ N的大小,但我怀疑,除非它大于.5左右,或者你的设置非常小,只需采样直到你受到打击将在实践中更快.