iOS 生成不重复的随机数数组

/**
 生成一组不重复的随机数 (随机数的个数为 最大数-最小数)

 @param min 最小的数
 @param max 最大的数
 @param count 随机数的个数(不能大于最大的数)
 @return 没有重复随机数字的数组
 */
+ (NSArray *)noRepeatRandomArrayWithMinNum:(NSInteger)min maxNum:(NSInteger )max count:(NSInteger)count{
    
    NSMutableSet *set = [NSMutableSet setWithCapacity:count];
    while (set.count < count) {
        NSInteger value = arc4random() % (max-min+1) + min;
        [set addObject:[NSNumber numberWithInteger:value]];
    }
    return set.allObjects;
    /* 下面这种方式效率很低
    //NSInteger count = max - min + 1;
    NSMutableArray <NSNumber *>*randomValues = [NSMutableArray array];
    //保存随机数
    NSInteger value; 
    for (int i = 0; i < count; i++) {
        do {
            value = arc4random() % (max-min+1) + min;
        } while ([randomValues containsObject:[NSNumber numberWithInteger:value]]);
        
        [randomValues addObject:[NSNumber numberWithInteger:value]];
    }
    return randomValues;
    */
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容