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 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

1541
来自专栏Golang语言社区

Knapsack problem algorithms for my real-life carry-on knapsack

I'm a nomad and live out of one carry-on bag. This means that the total weight o...

1142
来自专栏linux驱动个人学习

高通msm8909耳机调试

1、DTS相应修改: DTS相关代码:kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi: 1 s...

7635
来自专栏一个会写诗的程序员的博客

java.base.jmod

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ jmod list java....

1112
来自专栏Ryan Miao

ehcache报错

jfinal2.0+tomcat7+ehcache2.6.11+Linux Linux version 2.6.18-164.el5 (mockbuild@x8...

3729
来自专栏WOLFRAM

错觉艺术的巅峰,错觉图形大师M.C. Escher的不可能方块的可能模型

1363
来自专栏木宛城主

Fix Backup Database is terminating abnormally When performing a Farm Backup

Problem I am trying to backup SharePoint 2013 Farm Automatically with PowerShell...

2007
来自专栏linux驱动个人学习

高通Audio中ASOC的machine驱动

ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的...

9804
来自专栏搞前端的李蚊子

Html5模拟通讯录人员排序(sen.js)

// JavaScript Document  var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_...

6016
来自专栏WOLFRAM

向日葵中的数学之美

1863

扫码关注云+社区