数组随机排序(随手记)
注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
数组随机排序(随手记)相关推荐
- 关于JavaScript的数组随机排序
昨天了解了一下Fisher–Yates shuffle费雪耶兹随机置乱算法,现在再来看看下面这个曾经网上常见的一个写法: function shuffle(arr) { arr.sort(functi ...
- php 数组随机排序_php怎么实现数组随机排序
php数组随机排序,我们可以使用PHP shuffle()函数来实现. PHP shuffle()函数表示随机调整数组中元素或值的顺序.该shuffle()函数FALSE失败时返回. 下面我们就结合具 ...
- php 数组随机排序_php 数组元素随机排序代码
php教程 数组元素随机排序代码 因为工作需要我要对我定义好的数组进行随机排序,每一次循环都要是不同的,下面我们利用了php shuffle函数随机对数组元素进行排序.方法非常简单. shuffle( ...
- php 二维数组 随机排序_php二维数组排序—默认自然排序
什么是二维数组?二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称变方阵.对称矩阵a ...
- java数组随机排序_JAVA 生成随机数数组,并排序输出
package com.koal.test; import java.util.Arrays; /** * * @author hp * 排序 */ public class Sort { //要生成 ...
- JavaScript数组随机排序
//不断从原数组中随机取一个元素放进新数组,同时删除原数组中该值,递归重复至全部取出.function randomSort(arr, newArr) {var newArr = newArr || ...
- php 二维数组 随机排序_php二维数组排序方法(array_multisort usort)
例如像下面的数组: $users = array( array('name' => 'tom', 'age' => 20), array('name' => 'anny', 'age ...
- 【JS】数组随机排序
第一种方法:利用冒泡排序的原理,使两两元素比较的结果可正可负,它们的位置可换可不换,从而达到随机的目的. var arr = ["鹿晗", "王俊凯", &qu ...
- sort排序,数组随机排序,随即洗牌
jsFun() {console.log(1);//在使用需要某种程度的随机化的算法时.下面的片段以O(n log n)的复杂度对一个数组进行就地洗牌.// 测试const arr = [1, 2, ...
最新文章
- se(3)-TrackNet: 数据驱动的动态6D物体姿态跟踪, 基于合成域的图片残差校准
- golang 文件操作 创建 读写 复制移动 权限 删除
- Android-获取窗口的宽度与高度
- cuda-gpu计算随笔(1)
- 到底什么是P问题,NP问题,NPC问题,NP-hard问题?什么是规约(或约化)?
- TensorFlow入门:第一个机器学习Demo
- 分享一个理工男必学的撩妹姿势
- LeetCode MySQL 1435. 制作会话柱状图
- ctf线下赛mysql密码_CTF线下攻防赛
- Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
- 统计图源代码_openlayers4 入门开发系列结合 echarts4 实现统计图(附源码下载)
- [洛谷P4838]P哥破解密码
- 编程语言的执行方式、静态语言和脚本语言
- python批量保存网页为pdf_在chrome中自动打印/保存网页为pdf - python 3.6
- Python中取整函数汇总
- 按键精灵 手机 oracle,按键精灵Android版:软件使用
- 极速办公(excel)身份证中的出生日期如何提取
- [转贴]比《同居密友》更搞笑的【阿奴与唐玉】陶海风格
- 如何设置文件的默认打开方式
- TradingView--Charting Library是什么
热门文章
- Centos7 安装pyhton3.7.4
- linux shell 清空文件,查看文件,写入文件
- 第二阶段冲刺10天 第六天
- 加载jsp页面报#{} is not allowed in template text
- 你是怎样“被平均”的?细数统计数据中的那些坑
- 2018世界幸福指数中国排第86,这种报告是怎样做出来的?
- 命令color_【按键精灵教程】CmpColorEx、FindMultiColor 命令详解
- 名校生都去哪些互联网公司?
- PaaS中OpenShift持久化存储的管理实践
- 我要重构“软件行业”......