注1:集合是无序的且不保证随机的

注2:arc4random_uniform(x),可以用来产生0~(x-1)范围内的随机数,不需要再进行取模运算

方法一:

- (NSMutableArray *)randomArrayFrom:(NSArray*)oldArray

{

NSMutableArray *newArray = [NSMutableArray array];

while (newArray.count != oldArray.count)

{

NSInteger randomNum = arc4random()%oldArray.count;

id obj = oldArray[randomNum];

if (![newArray containsObject:obj])

{

[newArray addObject:obj];

}

}

return newArray;

}

方法二:

- (NSMutableArray *)randomArrayFrom:(NSArray*)oldArray

{

NSMutableArray *newArray = [NSMutableArray array];

NSMutableArray *tempArray = [NSMutableArray arrayWithArray:oldArray];

for (NSInteger i=0; i<oldArray.count; i++)

{

NSInteger randomNum = arc4random()%tempArray.count;

id obj = tempArray[randomNum];

[newArray addObject:obj];

[tempArray removeObject:obj];

}

return newArray;

}

方法三(官方方法,推荐使用):

//NSMutableArray

- (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0);

//NSArray

- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0);

- (NSArray *)randomArrayFrom:(NSArray*)oldArray

{

return [oldArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

int seed = arc4random_uniform(2);

if (seed)

{

return [obj1 compare:obj2];

}

else

{

return [obj2 compare:obj1];

}

}];

}

转载于:https://www.cnblogs.com/zhaobobo/p/6225964.html

数组随机排序(随手记)相关推荐

  1. 关于JavaScript的数组随机排序

    昨天了解了一下Fisher–Yates shuffle费雪耶兹随机置乱算法,现在再来看看下面这个曾经网上常见的一个写法: function shuffle(arr) { arr.sort(functi ...

  2. php 数组随机排序_php怎么实现数组随机排序

    php数组随机排序,我们可以使用PHP shuffle()函数来实现. PHP shuffle()函数表示随机调整数组中元素或值的顺序.该shuffle()函数FALSE失败时返回. 下面我们就结合具 ...

  3. php 数组随机排序_php 数组元素随机排序代码

    php教程 数组元素随机排序代码 因为工作需要我要对我定义好的数组进行随机排序,每一次循环都要是不同的,下面我们利用了php shuffle函数随机对数组元素进行排序.方法非常简单. shuffle( ...

  4. php 二维数组 随机排序_php二维数组排序—默认自然排序

    什么是二维数组?二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称变方阵.对称矩阵a ...

  5. java数组随机排序_JAVA 生成随机数数组,并排序输出

    package com.koal.test; import java.util.Arrays; /** * * @author hp * 排序 */ public class Sort { //要生成 ...

  6. JavaScript数组随机排序

    //不断从原数组中随机取一个元素放进新数组,同时删除原数组中该值,递归重复至全部取出.function randomSort(arr, newArr) {var newArr = newArr || ...

  7. php 二维数组 随机排序_php二维数组排序方法(array_multisort usort)

    例如像下面的数组: $users = array( array('name' => 'tom', 'age' => 20), array('name' => 'anny', 'age ...

  8. 【JS】数组随机排序

    第一种方法:利用冒泡排序的原理,使两两元素比较的结果可正可负,它们的位置可换可不换,从而达到随机的目的. var arr = ["鹿晗", "王俊凯", &qu ...

  9. sort排序,数组随机排序,随即洗牌

    jsFun() {console.log(1);//在使用需要某种程度的随机化的算法时.下面的片段以O(n log n)的复杂度对一个数组进行就地洗牌.// 测试const arr = [1, 2, ...

最新文章

  1. se(3)-TrackNet: 数据驱动的动态6D物体姿态跟踪, 基于合成域的图片残差校准
  2. golang 文件操作 创建 读写 复制移动 权限 删除
  3. Android-获取窗口的宽度与高度
  4. cuda-gpu计算随笔(1)
  5. 到底什么是P问题,NP问题,NPC问题,NP-hard问题?什么是规约(或约化)?
  6. TensorFlow入门:第一个机器学习Demo
  7. 分享一个理工男必学的撩妹姿势
  8. LeetCode MySQL 1435. 制作会话柱状图
  9. ctf线下赛mysql密码_CTF线下攻防赛
  10. Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
  11. 统计图源代码_openlayers4 入门开发系列结合 echarts4 实现统计图(附源码下载)
  12. [洛谷P4838]P哥破解密码
  13. 编程语言的执行方式、静态语言和脚本语言
  14. python批量保存网页为pdf_在chrome中自动打印/保存网页为pdf - python 3.6
  15. Python中取整函数汇总
  16. 按键精灵 手机 oracle,按键精灵Android版:软件使用
  17. 极速办公(excel)身份证中的出生日期如何提取
  18. [转贴]比《同居密友》更搞笑的【阿奴与唐玉】陶海风格
  19. 如何设置文件的默认打开方式
  20. TradingView--Charting Library是什么

热门文章

  1. Centos7 安装pyhton3.7.4
  2. linux shell 清空文件,查看文件,写入文件
  3. 第二阶段冲刺10天 第六天
  4. 加载jsp页面报#{} is not allowed in template text
  5. 你是怎样“被平均”的?细数统计数据中的那些坑
  6. 2018世界幸福指数中国排第86,这种报告是怎样做出来的?
  7. 命令color_【按键精灵教程】CmpColorEx、FindMultiColor 命令详解
  8. 名校生都去哪些互联网公司?
  9. PaaS中OpenShift持久化存储的管理实践
  10. 我要重构“软件行业”......