我想在某个diapason中生成随机数,我必须确定,每个新数字都不是前者的副本.一种解决方案是将以前生成的数字存储在容器中,并且每个新数字都检查容器.如果容器中有这样的数字,那么我们生成agin,否则我们使用并将其添加到容器中.但是对于每个新的数字,这个操作变得越来越慢.有没有更好的方法,或任何可以更快地工作并确保代的唯一性的兰特函数?
编辑:是的,有一个限制(例如从0到1.000.000.000).但我想生成100.000个唯一数字!(如果解决方案是使用Qt功能,将会很棒.)
jkr*_*mer 15
随机数是否有范围?如果您对随机数有限制并且继续生成唯一的随机数,那么您将以随机顺序得到x..y中所有数字的列表,其中xy是随机数的有效范围.如果是这种情况,您可以通过简单地生成所有数字的列表x..y并对其进行混洗来大大提高速度,而不是生成数字.
GvS*_*GvS 10
我认为有3种可能的方法,取决于范围大小,以及您可以使用其他算法所需的性能模式.
根据所需的速度,您可以将所有列表存储在数据库中.除了速度之外,它们不需要在内存中.
填写一个包含您需要的号码的列表,然后随机播放列表并从一端选择您的号码.
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |