2024-06-26 00:03:46
按你的描述和代码,应该是有一组已知的数待抽取,就像是一组扑克牌每次抽取一张直到抽取完成。
就此,建议使用洗牌算法将已知数字排序,然后按顺序每次取出一个数字则达到你的目的了。
下面是洗牌算法其中一种实现
NSArray *list0 = @[@1,@2,@3,@4,@5,@6,@7,@8,@9];
NSMutableArray *list = [NSMutableArray arrayWithArray:list0];
for (int i = 0; i < list.count; ++i) {
NSInteger x = arc4random() % list.count;
id tmp = list[i];
list[i] = list[x];
list[x] = tmp;
}
如果你还是想用原来的思路,那么可以定义一个数组,每次 arc4random() % list.count 生成索引,然后取出这个索引的值,并从队列中删除这个索引。
-(IBAction)button:(id)sender{
NSInteger m;
NSInteger x = arc4random() % list.count; // list 是全局的一个数组
NSInteger value = list[x]; // 这次得到的值。
[list removeObjectAtIndex:x]; // 删除后,下次 list.count 显然就少一个了。
}