iOS-关于随机数总结rand()random()drand48()arc4random()rac4random_uniform(int upper_bound)实例应用

C语言随机函数rand() random() drand48() OC随机函数arc4random() arc4random_uniform()

rand()

// 生成m~n之间的随机整数
-(int)randFrom:(int)m to:(int)n{
    static BOOL isSranded = NO;
    if (!isSranded) {
        isSranded = YES;
        srand((int)time(0));
    }
    return m + rand()%(n - m + 1);
}

random()

// 生成m~n之间的随机整数
-(int)randomFrom:(int)m to:(int)n{
    static BOOL isSranded = NO;
    if (!isSranded) {
        isSranded = YES;
        srandom((int)time(0));
    }
    return m + random()%(n - m + 1);
}

drand48()

// 生成0~1之间的随机浮点数
-(double)drand0To1{
    static BOOL isSranded = NO;
    if (!isSranded) {
        isSranded = YES;
        srand48(time(0));
    }
    return drand48();
}

arc4random()

// 生成m~n之间的随机整数
-(int)arc4randomFrom:(int)m to:(int)n{
    return m + arc4random()%(n - m + 1);
}

rac4random_uniform(int upper_bound)

// 生成0~N之间的随机整数
-(NSInteger)randomN:(int)n{
    return arc4random_uniform(n+1);
}

// 生成1~N之间的随机整数
-(NSInteger)random1ToN:(int)n{
    return arc4random_uniform(n) + 1;
}

实例应用

// 获取数组中随机的一个元素
-(id)randomArrayObject:(NSArray *)array{
    if ([array isKindOfClass:[NSArray class]] && [array count] > 0) {
        return array[arc4random_uniform((int)array.count)];
    }
    return nil;
}

// 获取1~100之间的不重复的长度是10的随机整数数组
-(NSArray *)getRandomArray  
{  
    NSMutableArray *seedsArray=[NSMutableArray array];
    for (int i = 0 ; i < 100; i++) {
        [seedsArray addObject:@(i+1)];
    }
    NSMutableArray *resultArray=[NSMutableArray array];  
    
    NSInteger n = 10;  
    for (int i = 0; i < n; i++) {  
        int m = arc4random_uniform((int)seedsArray.count);  
        [resultArray addObject:seedsArray[m]];  
        [seedsArray removeObjectAtIndex:m];  
    }  
    return resultArray;  
}

// 随机排序数组
-(NSArray *)randomSortArray:(NSArray *)array{
    NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
    NSUInteger count = [mutableArray count];
    if (count > 1) {
        for (NSUInteger i = count - 1; i > 0; --i) {
            [mutableArray exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform((int32_t)(i + 1))];
        }
    }
    return [NSArray arrayWithArray:mutableArray];
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

线性同余同余方程组解法(excrt)

【问题描述】 求关于 x 的同余方程组 x%a 1 =b 1  a1=b1 x%a 2 =b 2  a2=b2 x%a 3 =b 3  a3=b3 x%a...

5279
来自专栏C语言及其他语言

训练场优秀题解-尼科彻斯定理【图文并茂】

原题链接:【C语言训练】尼科彻斯定理 http://www.dotcpp.com/oj/problem1127.html 解题思路: 首先,定义整数N;写出N从...

3139
来自专栏null的专栏

机器学习算法实现解析——libFM之libFM的训练过程概述

本节主要介绍的是libFM源码分析的第四部分——libFM的训练。 FM模型的训练是FM模型的核心的部分。 4.1、libFM中训练过程的实现 在FM模型的训练...

46711
来自专栏数据结构与算法

计算几何笔记

若向量$(x, y)$旋转角度为$a$,则旋转后的向量为$(xcosa - ysina, y cosa + xsina)$

1702
来自专栏mwangblog

用遗传算法求函数最大值一:编码和适应值

求函数 f(x)=9×sin(5x)+8×cos(4x), x∈[5,10] 的最大值。

1612
来自专栏CreateAMind

keras doc 9 预处理等

用以生成一个batch的图像数据,支持实时数据提升。训练时该函数会无限生成数据,直到达到规定的epoch次数为止。

1892
来自专栏专知

用RNN构建文本生成器(TensorFlow Eager+ tf.keras)

【导读】本文翻译自TensorFlow官网新出的教程《Text generation using a RNN with eager execution》,该教程...

2363
来自专栏钱塘大数据

R语言的常用函数速查

一、基本 1.数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量character;字符型向量 list:列表 data....

3039
来自专栏转载gongluck的CSDN博客

bmp图像大小biSizeImage算法公式由来

LPBITMAPINFOHEADER lpbmiHeader; // ... 计算BMP方法 法一:lpbmiHeader->biSizeImage = (cx...

4555
来自专栏人工智能

十五:多层感知机与布尔函数

今天没有别的话,好好学习,多多转发! 本期内容是 【多层感知机与布尔函数】 场景描述 神经网络概念的诞生很大程度上受到了神经科学的启发。生物学研究表明,大脑皮层...

2748

扫码关注云+社区