Random生成随机数和范围内随机数

JAVA生成随机数有两个常用类,一个是java.util.Random,另一个是java.lang.Math,这两个类生成的随机数还是有一定区别的
一、 java.lang.Math类生成随机数

  • Math.random()是一个静态方法,默认随机生成的是[0~1)的double类型小数:
double random = Math.random(); System.out.println("生成[0,1)的小数值:" + random);

  • 生成随机整数[0~N)的整数(Math.random() * N)
double random = Math.random() * 5; int value = https://www.it610.com/article/(int) random; System.out.println("生成[0, 5)的整数值" + value);

二、 java.util.Random类生成随机数(生成随机数方法更多,更常用)
  • 生成[0, 1)的double类型小数
Random random = new Random(); double value = https://www.it610.com/article/random.nextDouble(); System.out.println(value);

  • 生成[0, N)的随机整数, random.nextInt(N)
Random random = new Random(); int value = https://www.it610.com/article/random.nextInt(10); System.out.println(value);

  • 生成其它随机数
    protected int next(int bits):生成下一个伪随机数。
    boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
    void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。
    double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
    float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。
    double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。
    int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
    int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
    long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
    void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。
三、生成范围内随机数[min, max], random.nextInt(max) % (max - min + 1) + min
Random random = new Ramdom(System.currentTimeMillis()); int value = https://www.it610.com/article/random.nextInt(20) % (20 - 5 + 1) + 5; System.out.println(value);

【Random生成随机数和范围内随机数】Random random = new Ramdom(bounds); Random类参数解释:
random类生成随机数,其实不是正真意义上的随机数,他是根据内部制定的规则,随机生成的伪随机数,每次按相同方式去生成随机数,生成的值会是一样。当我们给了bounds这个种子数,它会根据给的种子数去生成随机数,因为我们给的种子数是系统时间,种子数一直在改变,生成的值肯定不同。

    推荐阅读