如果你有NSMutableArray,你如何随机洗牌?
(我有自己的答案,发布在下面,但我是Cocoa的新手,我很想知道是否有更好的方法.)
更新:正如@Mukesh所述,从iOS 10+和macOS 10.12+开始,有一种-[NSMutableArray shuffledArray]方法可用于改组.有关详细信息,请参阅https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc.(但请注意,这会创建一个新数组,而不是将元素移动到位.)
我正在使用
for (int i = 1, i<100, i++)
int i = arc4random() % array count;
Run Code Online (Sandbox Code Playgroud)
但我每次都会重复.如何int从范围中填写所选的值,以便在程序循环时我不会得到任何欺骗?
我有NSArray17个对象,如下所示:
NSArray *objArray = [[NSArray alloc]initWithObjects: @"1",@"2",@"3",@"4",@"5",@"6"
,@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17", nil];
Run Code Online (Sandbox Code Playgroud)
和int一个随机数如下:
int random = arc4random()%17+1;
Run Code Online (Sandbox Code Playgroud)
NSArray即使我关闭了应用程序(也许是通过使用NSUserDefaults),我想从中获取一个随机对象,而不是它是重复的.
如果我已经获得了所有对象,我想为相同的对象生成一个新的随机序列.