欢迎阅读
生成[min,max]之间的随机正整数
代码片:
int max = 1; int min = 2; Random random = new Random(); //随机max 取余数(max - min + 1) + min int r = (random.nextInt(max) % (max - min + 1) + min);
生成[min,max]之间的随机整数
代码片:
int max = 1; int min = 2; Random random = new Random(); //随机max 取余数(max - min + 1) + min int r = (random.nextInt(max) % (max - min + 1) + min); //随机一个数如果大于0.5则为正整数 r = r * (Math.random() > 0.5 ? 1 : -1);
生成[min,max]之间的随机整数(负数-整数)
完整代码:
public static void main(String[] args) { for (int i = 0; i < 20; i++) { System.out.println(randomSpan(-3, 10)); } } public static int randomSpan(int a, int b) { if(a == b){ return a; } if (a < 0 && b < 0){ return fun1(a, b, true); }else if (a < 0 ) { return fun2(b, a); }else if (b < 0) { return fun2(a, b); }else { return fun1(a, b, false); } } public static int fun1(int a, int b, boolean f){ Random random = new Random(); int max = Math.max(Math.abs(a), Math.abs(b)); int min = Math.min(Math.abs(a), Math.abs(b)); int r = (random.nextInt(max) % (max - min + 1) + min); if (f){ r = r * -1; } return r; } public static int fun2(int a, int b){ Random random = new Random(); return Math.random() > 0.5 ? random.nextInt(Math.abs(a)) : random.nextInt(Math.abs(b)) * -1; }
运行效果:
-2 0 8 4 8 -2 -1 8 8 6 4 2 -1 1 5 0 -2 -1 4 5
使用例子:
randomSpan(2, 10); randomSpan(20, 10); randomSpan(2, -10); randomSpan(-2, 10);
生成[min,max]之间的浮点数
代码片:
public static double nextDouble(final double a, final double b){ double min = a < b ? a : b ; double max = a < b ? b : a ; if (min == max) { return min; } return min + ((max - min) * new Random().nextDouble()); }