[疯狂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();  // 不提供构造器,只能用该静态方法获取,默认使用当前系统时间作为种子,且种子不得自己设定!

你可能感兴趣的:(疯狂Java笔记)