Java中的随机类Random
程序员文章站
2022-05-21 18:35:57
...
需求是在整数1-9中间随机选择一个数字。
使用Math.random()。结果写成如下:int p = (int) (Math.random() * 9); 结果就是1和9永远随机不到。
查证Javase docs. 对于这个函数,是这样讲的:
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
因为less than 1.0, 所以强制转化到integer, 上面的p是永远不会为9的。0倒是可以随机到的,因为强制转化时会取下整。
使用函数Random.nextInt(int n) 这个函数:
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
比如上诉的需求可写为: Random ran = new Random(); int p =ran.nextInt(9)+1; 这样能够得到想要的结果。
如果要对任意输入的正整数范围取随机,则如下:
使用Math.random()。结果写成如下:int p = (int) (Math.random() * 9); 结果就是1和9永远随机不到。
查证Javase docs. 对于这个函数,是这样讲的:
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
因为less than 1.0, 所以强制转化到integer, 上面的p是永远不会为9的。0倒是可以随机到的,因为强制转化时会取下整。
使用函数Random.nextInt(int n) 这个函数:
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
比如上诉的需求可写为: Random ran = new Random(); int p =ran.nextInt(9)+1; 这样能够得到想要的结果。
如果要对任意输入的正整数范围取随机,则如下:
int createRandom(int min, int max) { Random random = new Random(); return random.nextInt(max-min+1)+ min; }