How to generate random numbers from 1-99 range in Objective-C?
本问题已经有最佳答案,请猛点这里访问。
这是我从1到99生成随机数的代码,但每次只生成相同的一组数字(15个数字)。我将这些数字存储在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -(void) randoms { myset=[[NSArray alloc]init]; int D[20]; BOOL flag; for (int i=0; i<15; i++) { int randum= random()%100; flag= true; int size= (sizeof D); for (int x=0; x<size; x++) { if (randum == D[x]) { i--; flag= false; break; } } if (flag) D[i]=randum; } for (int j=0; j<15; j++) { myset=[myset arrayByAddingObject:[NSNumber numberWithInt:D[j]]]; } NSLog(@"first set..%@",myset.description); } |
你必须在使用发电机之前给它播种。如果您想跳过播种,可以使用arc4random_Uniform()。这是一种不同的算法,它自己负责播种过程。除此之外,您可以在代码中使用它,就像使用Random()一样。您只需将上限指定为参数,而不是使用modulo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -(void) randoms { myset=[[NSArray alloc]init]; int D[20]; BOOL flag; for (int i=0; i<15; i++) { int randum= arc4random_uniform(100); flag= true; int size= (sizeof D); for (int x=0; x<size; x++) { if (randum == D[x]) { i--; flag= false; break; } } if (flag) D[i]=randum; } for (int j=0; j<15; j++) { myset=[myset arrayByAddingObject:[NSNumber numberWithInt:D[j]]]; } NSLog(@"first set..%@",myset.description); } |
号
如果我理解正确,你需要一个包含15个1-99之间的随机数的集合。您可以使用以下内容:
1 2 3 4 5 6 7 8 9 10 | - (NSSet *)randomSetOfSize:(int)size lowerBound:(int)lowerBound upperBound:(int)upperBound { NSMutableSet *randomSet=[NSMutableSet new]; while (randomSet.count <size) { int randomInt=arc4random_uniform(upperBound-lowerBound)+lowerBound; NSNumber *randomNumber=[NSNumber numberWithInt:randomInt]; [randomSet addObject:randomNumber]; } return randomSet; } |
然后打电话给
1 | NSSet *myRandomSet=[self randomSetOfSize:14 lowerBound:1 upperBound:99]; |
。
在启动arc4random之前尝试此命令