【Android杂谈】生成随机数

栏目: Android · 发布时间: 7年前

内容简介:几种动态生成随机数的方法:前面三种方法比较常见,主要说一下后三种:代码示例:

几种动态生成随机数的方法:

  1. 使用 System#currentTimeMillis() 获取一个当前时间毫秒数的long型数字
  2. 使用 Random#nextInt(int n) 产生一个0到n之间整数
  3. 使用 Math#random() 返回一个0到1之间的double值
  4. 使用 ThreadLocalRandom.nextInt(0, n) 生成0到n之间的随机整数
  5. 使用 SecureRandom
  6. 使用 SplittableRandom#(0,n) 生成0到n之间的随机数

前面三种方法比较常见,主要说一下后三种:

  • ThreadLocalRandom : 主要优点在于针对并发编程提高了性能,比Math.random()方法占用更少的资源。
  • SecureRandom :提供加密的强随机数,提高安全性。
  • SplittableRandom :生成一系列均匀伪随机数,主要用于并行计算中隔离的子任务,以确保随机数生成器的独立性和均匀性。不受加密保护,在安全敏感的应用程序中使用 SecureRandom

代码示例:

static int random0() {
    return (int) (SystemClock.uptimeMillis() % MAX_RANGE);
  }

  private static final Random RANDOM = new Random();
  private static int random1() {
    return RANDOM.nextInt(MAX_RANGE);
  }

  private static int random2() {
    return (int) (Math.random() * MAX_RANGE);
  }

  private static int random3() {
    return ThreadLocalRandom.current().nextInt(0, MAX_RANGE);
  }

  private static final SecureRandom SECURE_RANDOM = new SecureRandom();
  private static int random4() {
    return SECURE_RANDOM.nextInt();
  }

  private static int random5() {
    return new SplittableRandom().nextInt(0, MAX_RANGE);
  }

在多个优先级的线程上的性能测试结果:

【Android杂谈】生成随机数

在主线程上测Wall Time和CPU Time:

【Android杂谈】生成随机数

结论:

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)


以上所述就是小编给大家介绍的《【Android杂谈】生成随机数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

释放潜能:平台型组织的进化路线图

释放潜能:平台型组织的进化路线图

穆胜 / 人民邮电出版社 / 2017-12 / 59.80元

传统的组织模式中,企业逃不出“员工动不起来”和“创新乏力”的宿命。互联网改变商业逻辑的同时也改变了组织逻辑。平台型组织是匹配互联网商业逻辑的组织模式,它赋予了基层员工更多的责权利,能够在需求侧灵敏获取用户刚需、在供给侧灵活整合各类资源、用“分好钱”的机制激活个体去整合各类资源满足用户刚需,形 成供需之间的高效连接。 打造平台型组织有两大主题:一是通过设计精巧的激励机制让每个人都能感受到市场的压力,......一起来看看 《释放潜能:平台型组织的进化路线图》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换