这里我用下面的代码来洗牌NSMuttable阵列,而混洗阵列重复只有一个值,并保持所有正常工作,我应该做什么改变而不重复洗牌?洗牌阵列重复一个值
words = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3",@"4", nil] ;
NSUInteger count = [words count];
for (int i = 0; i < count; i++)
{
NSInteger nElements = count - i;
NSInteger n = (arc4random() % nElements) + i;
NSLog(@"n val %d i val %d",i,n);
[words exchangeObjectAtIndex:i withObjectAtIndex:n];
}
的NSLog输出
2012-12-31 12:49:05.730 quizer[1607:c07] n val 0 i val 0
2012-12-31 12:49:05.731 quizer[1607:c07] n val 1 i val 3
2012-12-31 12:49:05.731 quizer[1607:c07] n val 2 i val 2
2012-12-31 12:49:05.732 quizer[1607:c07] n val 3 i val 3
请帮我解决
你想要什么?每个值只有一次? –
@AnoopVaidya是的,我想要每个值一次 –
@Dev_iOS请注意,它不是数组中的值重复,它是随机数。不要指望随机数不重复,重复是随机性的一部分。 Pi的十进制表示在中间的某个地方包含'3141592653' ... – 2012-12-31 07:32:35