zoukankan      html  css  js  c++  java
  • 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'];
  • 相关阅读:
    生成全局id的方式
    如何使得搜索的信息更准确?
    水平分区
    大表如何优化?
    MySQL_fetch_array和MySQL_fetch_object的区别是什么?
    BLOB和TEXT区别
    如何在Unix和MySQL时间戳之间进行转换?
    用ActionSupport实现验证
    服务器端验证--验证框架验证required.
    自定义类型转换器converter
  • 原文地址:https://www.cnblogs.com/lxgo/p/5279046.html
Copyright © 2011-2022 走看看