ios 产生一个随机不重复数字 xcode obj c 求助

发布网友 发布时间:2022-04-22 07:32

我来回答

1个回答

热心网友 时间:2023-09-18 16:29

按你的描述和代码,应该是有一组已知的数待抽取,就像是一组扑克牌每次抽取一张直到抽取完成。

就此,建议使用洗牌算法将已知数字排序,然后按顺序每次取出一个数字则达到你的目的了。

下面是洗牌算法其中一种实现

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 显然就少一个了。
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com