• object-c 随机数总结


    解决几个典型的问题:

    如何生成一个 Objective-C 的随机数?

    使用arc4random()

    具体而言,产生一个0-n-1之间的随机数,使用arc4random_uniform(),从而避免模偏差

    NSUInteger r = arc4random_uniform(N);

    0 到 1 之间的随机浮点数(double)

    如果你要生成一个随机 double 或 float,另一个很好的选择是功能较模糊的 rand48 家族,包括 drand48(3)

       srand48(time(0));

        for (int i = 0; i < 10; i++) {

            double r = drand48();

            NSLog(@"%f[%d]", r, i);

        }

    不像 arc4random 函数, rand48 函数在产生随机数之前需要种子的初始值。这个种子函数 srand48(time(0)) 应该只运行一次。

    如何从一个 NSArray 选择一个随机元素?

    NSArray *arr = @[@1, @2, @3, @5, @0];
        if ([arr count] > 0) {
            
            id obj = arr[arc4random_uniform((u_int32_t)[arr count])];
            NSLog( @"%@", obj);
        }

    如何随机排序一个 NSArray

    NSArray *arr = @[@1, @2, @3, @5, @0];
        NSMutableArray *a = [NSMutableArray arrayWithArray:arr];
        if ([arr count] > 1) {
            
            for (NSUInteger i = [arr count] - 1; i > 0; --i) {
                
                [a exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform((u_int32_t)(i + 1))];
                
            }
        }
        NSLog(@"%@", a);

    生成一个随机的小写 NSString

    如果你是对一个已知的,连续范围的 Unicode 字符做处理,例如小写字母 (U+0061 — U+007A),你可以从 char 做一个简单的换算:

    NSString *letter = [NSString stringWithFormat:@"%c", arc4random_uniform(26) + 'a'];
  • 相关阅读:
    WCF 第五章 行为 总结
    WCF 第五章 行为 为服务终结点行为实现一个消息检测器
    WCF 第五章 行为 安全行为
    WCF 第五章 行为 通过配置文件暴露一个服务行为
    静观己心,厚积薄发
    WCF 第五章 行为 实现自定义行为
    创建进程 和 列出所有进程
    递归和分治算法经典题目
    CreateToolhelp32Snapshot
    Base64 编解码C语言实现
  • 原文地址:https://www.cnblogs.com/lxgo/p/5279046.html
Copyright © 2020-2023  润新知