生成非重复随机数

SAQ*_*FAR 1 c logic objective-c

我想在C中创建一个函数.它将返回一个N范围内的随机整数,如: - rand()%N; 但事情是我想跟踪独特性.我不想重复这些数字.但我也可以通过制作一个数组并复制生成的整数来实现这一点.喜欢: - array[count] = rand() % N;并且每次检查生成的数字是否已经在其中.(只需在数组[]中搜索; 这是一个简单的方法,但是正确的方法.这需要很多,如果有的话; 为此工作.这是我能想到的最好的.


问题是,我想为此问题获得最佳/优化的解决方案.最有效的方法是什么?

让我们清楚一些事情: - 我想在UILabel中设置一些始终是唯一的NSArray文本.我的NSArray从Plist获取数据,我的Plist有超过1000个条目.如果我想多次这样做会影响性能,所以我想要一些有效的方法来做到这一点.

Cal*_*leb 6

听起来你想要的实际上是数字1..N的随机排列.因此,用连续的整数1..N填充数组,然后将数组洗牌.有一些众所周知的改组算法,你可以查找.