NSArray* array = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], [NSNumber numberWithInt:4], [NSNumber numberWithInt:5], nil]; NSMutableArray* randomArray = [NSMutableArray arrayWithArray:array]; NSLog(@"%@", randomArray); /*计算机生成的随机数实际上是“伪随机数”,因为它并非真正“随机”。 当 随机数“种子值”固定时,它生成的随机数序列是固定的。 例如 第一次产生 41 67 34 0 69 14, 第二次,第三次...产生的还是41 67 34 0 69 14。 没有 srand() 这句,就是用 默认 种子值。 用 srand((unsigned)time(NULL)); 就是用当前时间秒数(从1970年到现在的时间间隔,单位秒)为种子。 时间变,种子就变,产生的 随机数序列 就变化。增进了“随机性”。 */ srandom((unsigned int)time(NULL)); NSInteger count = randomArray.count; for (int i = 0; i < count; i++) { NSInteger target = random() % count; //swap NSNumber* tmpNumber = [randomArray objectAtIndex:target]; [randomArray replaceObjectAtIndex:target withObject:[randomArray objectAtIndex:i]]; [randomArray replaceObjectAtIndex:i withObject:tmpNumber]; } NSLog(@"%@", randomArray);