0

我们如何检查通过我生成的数字是否在尝试生成 0 到 10 之间的唯一数字。

随机数 = arc4random() % 10;

是独一无二的吗?

我能够生成一个随机数,但无法检查它是否唯一?

谢谢

4

3 回答 3

3

为避免重复,请参阅以下随机数生成代码。当你运行下面的代码时也不会重叠任何数字。如果你的意思是你想要它独一无二。

#define COUNT 1000
#define RANGE 1000
int num[COUNT];

bool isNew(int idx, int val)
{
    for (int i=0; i<idx; i++) 
    {
        if (num[i] == val) return false;
    }
    return true;
}

for (int i=0; i<COUNT; i++)
{
    do
    {
        num[i]=arc4random()%RANGE;        
    }
    while (!isNew(i, num[i]));
    NSLog(@"%d ", num[i]);
}    
于 2012-08-05T04:19:33.030 回答
1

您可以将所有生成的数字保存在一个数组中,并检查是否有两个重复。

您拥有的数字越多,生成的数字就越确定是唯一的。

于 2012-08-04T19:54:43.023 回答
0

试试这个代码......这将为您提供在可变数组中设置的所有可能的唯一数字......

-(NSInteger) randomNumber {
NSInteger newRandomNumber = (NSInteger) arc4random() % 10;
NSInteger uniqueNumber;
if ([self.arrayContainingNumbers containsObject: [NSNumber numberWithInteger:newRandomNumber]]) {
    [self randomNumber];
    } else {
    [self.arrayContainingNumbers addObject: [NSNumber numberWithInteger:newRandomNumber]];
}
uniqueNumber = [[self.mutableArrayContainingNumbers lastObject]integerValue];
     NSLog(@"new Unique Number is %ld",(long)uniqueNumber);

return uniqueNumber;  }

不要忘记添加此方法:)

-(NSMutableArray *) arrayContainingNumbers {
if (!_mutableArrayContainingNumbers) {
    _mutableArrayContainingNumbers = [[NSMutableArray alloc] init];
}
return _mutableArrayContainingNumbers; }
于 2015-08-05T12:03:48.773 回答