[疯狂Java]基础类库:Random(随机数生成)、ThreadLocalRandom(线程安全随机数生成)

1. Random类的使用方法:

    1) 和其它语言一样,Java的Random其实也是一个为随机序列生成器,同样需要一个序列种子作为序列的开关,如果种子相同则产生的序列相同;

    2) 构造器:Random([long seed]);  // 无参则默认使用当前时间作为序列种子!省去了C语言那种还要使用time.h库获取当前时间的步骤,非常贴心!

    3) 接着调用next系列方法获取下一个随机数:type nextType();  // type支持int、long、float、double、boolean

!!整型的范围默认是[0, 类型上限),浮点型范围默认是[0.0, 1.0),注意!都是左闭右开的!!

!!不管获取哪种类型,获取几次,它们都属于一个随机序列的!

    4) 特殊的,只有nextInt可以指定随机数范围(连long都不行,只有int行!):int nextInt(int bound);  // 范围是[0, bound),是左闭右开的!!

    5) 特殊的,获取(0.0, 1.0)的伪高斯数:double nextGaussian();

    6) 特殊的,得到一串为随机二进制序列:void nextBytes(byte[] bytes);  // 随机序列放入bytes中

    6) 如果有必要,也可以显式地用当前系统时间设置种子:Random rand = new Random(System.currentTimeMillis());


2. ThreadLocalRandom:

    1) 和Random的功能完全一样,只不过该类是线程安全的,适用于多线程环境;

    2) 除了其构造方式和Random不一样外,其它的所有方法(next系列等)完全和Random一样,因此这里只介绍如何获得它的对象;

    3) 获取对象:static ThreadLocalRandom ThreadLocalRandom.current();  // 不提供构造器,只能用该静态方法获取,默认使用当前系统时间作为种子,且种子不得自己设定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值