开发者

Generate Random Numbers without duplicates in iPhone?

开发者 https://www.devze.com 2023-03-07 17:00 出处:网络
I want to generate the random numbers using this loop. When i runs the apps at everytime, i want to generate the rando开发者_开发知识库m numbers without duplicates.

I want to generate the random numbers using this loop. When i runs the apps at everytime, i want to generate the rando开发者_开发知识库m numbers without duplicates.

Eg:

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


It's Random Permutation Generation problem. Read this: http://www.techuser.net/randpermgen.html

The main idea is (in pseudo code):

for (i=1 to n) ar[i] = i;
for (i=1 to n) swap(ar[i], ar[Random(i,n)]);

In your case:

 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]); 
    }


Can be something like this,

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;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号