当前位置: 代码迷 >> 综合 >> 006:Generating random integers in a specific range
  详细解决方案

006:Generating random integers in a specific range

热度:44   发布时间:2023-12-13 06:54:20.0

题目
参数任意满足要求的随机正整数
解答
方法一:利用Math.random() 参数[0,1)内的随机数,参数[min,max]内的随机数

    // 利用 [0,1)内的随机数参数 [min,max]内的随机正整数public static int randInt(int min,int max){int randInt = min + (int)(Math.random() * ((max - min) + 1));return randInt;}
Math.random()

参数 [0,1) 内的随机数
Math.random()?((max?min) 参数 [0,max?min) 内的随机数
(int)x是向下取整,例如: (int)1.9=1
所以

(int)(Math.random() * (max - min))

产生的整数是: [0,max?min?1]
故需要加一才符合要求

int randInt = min + (int)(Math.random() * ((max - min) + 1));

或者用这样

    // 利用 [0,1)内的随机数参数 [min,max]内的随机正整数protected static int randInt(int min,int max){Random random = new Random();int randInt = (int) (min + random.nextFloat()*(max - min + 1));return randInt;}

方法二:利用 [0,max-min+1)内的随机数参数 [min,max]内的随机正整数

    protected static int randInt(int min,int max){Random random = new Random();int randInt = (int) (min + random.nextInt(max - min + 1));return randInt;}

本专题来源stackoverflow 标签是java的投票数比较高的问题以及回答,我只对上面的回答根据自己的理解做下总结。

  相关解决方案