随机数在Objective-C中生成唯一数字?

时间:2011-06-17 11:25:45

标签: objective-c random

我想在Objective-C中生成1-100之间的随机数。每个随机数应该是唯一的,与先前生成的随机数不同。

6 个答案:

答案 0 :(得分:77)

检查此链接



  • Objective-C: Get random number

    -(int)getRandomNumberBetween:(int)from and:(int)to {
    
        return (int)from + arc4random() % (to-from+1);
    }
    

    使用方法:

    1)将上述方法实施到.m文件中

    2)将以下行添加到.h文件中:

    -(int)getRandomNumberBetween:(int)from and:(int)to;
    

    3)调用如下方法:

    int randomNumber = [self getRandomNumberBetween:9 and:99];
    //this gets you a random number between 9 and 99
    

答案 1 :(得分:6)

arc4random() %(100)-1这对我有用。

答案 2 :(得分:5)

使用arc4random并将结果存储在NSSet中,NSSet将为您处理重复项。

答案 3 :(得分:4)

另一种简单的方法是使用arc4random_uniform()方法:

调用arc4random_uniform(N)返回一个从0到N-1的随机数。要获得从1到N的数字,您可以使用:

NSUInteger r = arc4random_uniform(N) + 1;

其中N是您要查找的最大数字。在Swift中,你可以这样做:

var randomIndex:UInt32 = arc4random_uniform(N) + 1

e.g。如果你想获得1到100之间的随机数,只需调用:

NSUInteger r = arc4random_uniform(100) + 1;

或在swift:

var randomIndex:UInt32 = arc4random_uniform(100)+1

答案 4 :(得分:2)

这是生成唯一随机数的代码......

-(void)UniqueRandom{

    int T[11];
    BOOL flag;
    for(int i=0;i<10;i++){

        int ranNo=  random()%100+1;
        flag=TRUE;
        int s=(sizeof T); 

        for(int x=0;x<s;x++){

            if(ranNo==T[x]){
                i--;
                flag= FALSE;
                break;
            }
        }

        if(flag) T[i]=ranNo;
    }

    for(int j=0;j<100;j++)  NSLog(@"unique random %d",T[j]);
    }
}

快乐编码..

答案 5 :(得分:0)

此方法将在高低范围的区间内生成唯一随机数的数组。

-(void)generateRandomUniqueNumberInRange :(int)rangeLow :(int)rangeHigh{
    NSMutableArray *unqArray=[[NSMutableArray alloc] init];
    int randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
    int counter=0;
    while (counter<rangeHigh-rangeLow) {
        if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
            [unqArray addObject:[NSNumber numberWithInt:randNum]];
            counter++;
        }else{
            randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
        }

    }
    NSLog(@"UNIQUE ARRAY %@",unqArray);

}