生成指定范围的随机数(Java&JS)

需求

有时,在我们的开发中可能会需要生成 [min,max] 的随机数,这里提供 JavaJS 版本的公式。

Java

前提

Math.random() : 返回带有正号的 double 值,大于或等于 0.0 且小于 1.0。返回值是伪随机选择的,具有来自该范围的(近似)均匀分布。https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html#random())
Random.nextInt(int bound) : 返回从此随机数生成器的序列中提取的伪随机,均匀分布的 int 值,介于 0(包括)和指定值(不包括)之间。
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Random.html#nextInt(int))

实现

public static int getRandomInt(int min, int max) {
    Random rand;
    int randomNum = rand.nextInt((max - min) + 1) + min;
    return randomNum;
}

或者

(int)(Math.random() * ((max - min) + 1)) + min
实际上, java.util.Random 类通常比 java.lang.Math.random()更可取。

JS

前提

Math.ceil() : 向上取整
Math.floor() : 向下取整
Math.round() : 四舍五入
Math.random() : 0.0 ~ 1.0 之间的一个伪随机数。【包含0不包含1】,比如0.8647578968666494

实现

function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

参考

https://stackoverflow.com/a/363692
https://stackoverflow.com/a/1527820


 上一篇
Centos搭建Git服务器 Centos搭建Git服务器
系统环境系统:Linux : Centos 7.3.1611查看系统命令:lsb_release -a查看 ssh 版本: ssh -V输出以下表示没问题,可以继续。 版本可能不一致,能用即可。 OpenSSH_6.6.1p1, OpenS
2019-07-14
下一篇 
用私有构造器或者枚举类型强化Singleton属性 用私有构造器或者枚举类型强化Singleton属性
前言Singleton 是指仅仅被实例化一次的类。通常被用来代表一个无状态的对象。使类成为 Singleton 会使它的客户端测试变得十分困难, 因为不可能给 Singleton 替换模拟实现,除非实现一个充当其类型的接口。 实现 Sing
2019-07-04
  目录