iOS:从NSMutableArray中获取3个不同的随机元素

Dav*_*dNg 6 random nsarray ios

我有一个N个整数元素的NSMutableArray(N> 4),我想从这个数组中得到3个不同的随机元素.我真的不需要一个完美均匀的分布,只有3个不同的随机元素应该没问题.你有什么建议吗?谢谢

das*_*ght 10

制作NSIndexSet并继续添加

int value = arc4random() % array.count;
Run Code Online (Sandbox Code Playgroud)

直到它的大小到达它的项目3.你知道你有三个索引.

NSMutableIndexSet *picks = [NSMutableIndexSet indexSet];
do {
    [picks addIndex:arc4random() % array.count];
} while (picks.count != 3);
[picks enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
    NSLog(@"Element at index %ud: %@", idx, [array elementAt:idx]);
}];
Run Code Online (Sandbox Code Playgroud)


Fei*_*anZ 6

for (int i = 1; i <= 3; i++) {    
    int index = (int)(arc4random() % [array count]);
    id object = [array objectAtIndex:index];
    [array removeObjectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)

arc4random()返回[0,2 ^ 32-1]范围内的随机数.使用模数大小的模数得到的余数得到一个介于[0,arrayCountLessOne]之间的值.

如果您不想更改原始数据数组,则只需复制该数组即可.