Ios 在Objective-C中生成3个唯一的随机数?
我试图生成3个0到25之间的随机数。我使用了Ios 在Objective-C中生成3个唯一的随机数?,ios,objective-c,random,Ios,Objective C,Random,我试图生成3个0到25之间的随机数。我使用了arc4random\u uniform(25),它生成了3个随机数。但问题是,有时我得到的两个甚至所有三个数字都是相同的,但我需要3个唯一的数字。正如@Thilo所说,你必须检查它们是否是随机的,如果不是,则重复: // This assumes you don't want 0 picked u_int32_t numbers[3] = { 0, 0, 0 }; for (unsigned i = 0; i < 3; i++) { B
arc4random\u uniform(25)
,它生成了3个随机数。但问题是,有时我得到的两个甚至所有三个数字都是相同的,但我需要3个唯一的数字。正如@Thilo所说,你必须检查它们是否是随机的,如果不是,则重复:
// This assumes you don't want 0 picked
u_int32_t numbers[3] = { 0, 0, 0 };
for (unsigned i = 0; i < 3; i++)
{
BOOL found = NO;
u_int32_t number;
do
{
number = arc4random_uniform(25);
if (i > 0)
for (unsigned j = 0; j < i - 1 && !found; j++)
found = numbers[j] == number;
}
while (!found);
numbers[i] = number;
}
//这假定您不希望拾取0
u_int32_t数[3]={0,0,0};
for(无符号i=0;i<3;i++)
{
BOOL-found=NO;
u__int32_t编号;
做
{
数字=arc4random_均匀(25);
如果(i>0)
for(无符号j=0;j
int checker[3];
对于(int i=0;i<3;i++){
棋盘格[i]=0;
}
对于(int i=0;i<3;i++){
random=arc4random()%3;
while(checker[random]==1){
random=arc4random()%20;
}
棋盘格[随机]=1;
NSLog(@“随机数%d”,随机);
}
我以以下方式生成一个唯一随机数数组:
-(void)generateRandomUniqueNumberThree{
NSMutableArray *unqArray=[[NSMutableArray alloc] init];
int randNum = arc4random() % (25);
int counter=0;
while (counter<3) {
if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
[unqArray addObject:[NSNumber numberWithInt:randNum]];
counter++;
}else{
randNum = arc4random() % (25);
}
}
NSLog(@"UNIQUE ARRAY %@",unqArray);
}
-(void)GeneratorDomainUniquenumberThree{
NSMutableArray*unqArray=[[NSMutableArray alloc]init];
int randNum=arc4random()%(25);
int计数器=0;
while(counter)重复这个过程直到你有三个不同的数字。可能重复的是我重复了三次,你说我必须在if()中检查这些数字?查看我链接到的另一个问题的答案。选项一:标记你得到的并重复。选项二:洗牌数组0..25并取前3个。谢谢你,它对我有效。它为我生成3个唯一的数字,现在我必须从生成的三个数字中随机选择一个数字。有什么想法吗?@Bharat将索引生成为numbers[]
使用arc4random\u uniform()
然后简单地使用数字[索引]
。
-(void)generateRandomUniqueNumberThree{
NSMutableArray *unqArray=[[NSMutableArray alloc] init];
int randNum = arc4random() % (25);
int counter=0;
while (counter<3) {
if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
[unqArray addObject:[NSNumber numberWithInt:randNum]];
counter++;
}else{
randNum = arc4random() % (25);
}
}
NSLog(@"UNIQUE ARRAY %@",unqArray);
}