我想在Objective-C中生成1-100之间的随机数。每个随机数应该是唯一的,与先前生成的随机数不同。
答案 0 :(得分:77)
检查此链接
How do I generate random numbers on the iPhone?
int r = arc4random() % 100;
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);
}