相关疑难解决方法(0)

创建无重复的随机数序列

重复:

O(1)中的唯一随机数?

我想要一个伪随机数生成器,它可以按随机顺序生成没有重复的数字.

例如:

随机(10)

可能会返回5,9,1,4,2,8,3,7,6,10

有没有更好的方法来做到这一点,除了使数字的范围和洗牌,或检查生成的列表重复?


编辑:

此外,我希望它在没有整个范围的情况下有效地生成大数字.


编辑:

我看到每个人都建议使用随机算法.但是,如果我想生成大的随机数(1024字节+),那么该方法将占用更多的内存,而不是我刚使用常规RNG并插入到Set中,直到它是指定的长度,对吧?对此没有更好的数学算法.

c c++ random algorithm

38
推荐指数
5
解决办法
7万
查看次数

如何有效地生成0和上限N之间的K个非重复整数列表

该问题给出了所有必要的数据:在给定区间[0,N-1]内生成一系列K个非重复整数的有效算法是什么.平凡算法(产生随机数,并把它们添加到序列,看着他们,看看他们是否已经在那里之前)是非常昂贵的,如果ķ大且足够接近ñ.

从链表有效地选择一组随机元素中提供的算法似乎比必要的更复杂,并且需要一些实现.我刚刚发现了另一种似乎可以完成工作的算法,只要您知道所有相关参数,只需一次通过即可.

arrays random algorithm permutation

29
推荐指数
3
解决办法
2万
查看次数

标签 统计

algorithm ×2

random ×2

arrays ×1

c ×1

c++ ×1

permutation ×1