在iPhone中生成无重复的随机数?

时间:2011-05-21 10:37:08

标签: iphone random numbers

我想使用这个循环生成随机数。当我每次都运行应用程序时,我想生成随机数而不重复

例如:

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

2 个答案:

答案 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;
}
相关问题