我们如何检查通过我生成的数字是否在尝试生成 0 到 10 之间的唯一数字。
随机数 = arc4random() % 10;
是独一无二的吗?
我能够生成一个随机数,但无法检查它是否唯一?
谢谢
为避免重复,请参阅以下随机数生成代码。当你运行下面的代码时也不会重叠任何数字。如果你的意思是你想要它独一无二。
#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]);
}
您可以将所有生成的数字保存在一个数组中,并检查是否有两个重复。
您拥有的数字越多,生成的数字就越确定是唯一的。
试试这个代码......这将为您提供在可变数组中设置的所有可能的唯一数字......
-(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; }