Ios 在Objective-C中生成3个唯一的随机数?

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

我试图生成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++)
{
    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);

}