题目
参数任意满足要求的随机正整数
解答
方法一:利用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的投票数比较高的问题以及回答,我只对上面的回答根据自己的理解做下总结。