我想使用这个循环生成随机数。当我每次都运行应用程序时,我想生成随机数而不重复。
例如:
for(int i = 0; i < 5; i++)
{
// int d = random() % i;
NSLog(@"The Value %d",i);
NSLog(@"The random Number %d",i);
}
Actual Number Random Number
1 4
2 5
3 2
4 1
5 3
答案 0 :(得分:4)
这是随机置换生成问题。阅读:http://www.techuser.net/randpermgen.html
主要思想是(伪代码):
for (i=1 to n) ar[i] = i;
for (i=1 to n) swap(ar[i], ar[Random(i,n)]);
在你的情况下:
int ar[5],i,d,tmp;
for(i = 0; i < 5; i++) ar[i] = i+1;
for(i = 0; i < 5; i++) {
d = i + (random()%(5-i));
tmp = ar[i];
ar[i] = ar[d];
ar[d] = tmp;
NSLog(@"%d",ar[i]);
}
答案 1 :(得分:0)
可以是这样的,
int rand[5] = {0};
int max = 5;
for(int i = 0; i < max; i++){
int r = random() % max + 1;
while([self foundNumber:r inArray:rand limit:i){
r = random() % max + 1;
}
rand[i] = r;
}
- (BOOL) foundNumber:r inArray:rand limit:l {
for(int i = 0; i < l; i++){
if(rand[i] == r) return YES;
}
return NO;
}