我采用了两个标签&使用下面的代码在它们上生成随机操作符:
NSArray *operators = @[@"+", @"-", @"*", @"/"];
int randomOperatorIndex = arc4random_uniform(4);
NSString *randomOperator = operators[randomOperatorIndex];但是这两个标签都生成了相同的随机算子。我想在两个标签上生成不同的运算符。例如:
如果label-1生成"+“
那么label-2应该生成"/“
但现在label-1和label-2在生成随机算子后具有相同的算子。
我如何用Objective-C在iOS上做到这一点?
发布于 2014-01-20 08:59:04
试试这个:
// Returns an array of unique random numbers with range
-(NSMutableArray *)getRandomNumbersOfSize:(int) size from:(int) lowerLimit to:(int) higherLimit
{
NSMutableArray *uniqueNumbers = [[NSMutableArray alloc] init];
int r;
while ([uniqueNumbers count] < size)
{
r = lowerLimit + arc4random_uniform(higherLimit - lowerLimit + 1) ;
if (![uniqueNumbers containsObject:[NSNumber numberWithInt:r]])
{
[uniqueNumbers addObject:[NSNumber numberWithInt:r]];
}
}
return uniqueNumbers;
}在你的方法中,你需要唯一的随机标签:
NSArray *operators = @[@"+", @"-", @"*", @"/"];
NSMutableArray* randomOperatorIndexArray = [self getRandomNumbersOfSize:2
from:0
to:([operators count]-1)];
for(int j=0;j<[randomOperatorIndexArray count];j++)
{
NSString *randomOperator = [operators objectAtIndex:[[randomOperatorIndexArray objectAtIndex:j] intValue]];
NSLog(@"%@",randomOperator);
}https://stackoverflow.com/questions/21223622
复制相似问题