版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Point9/article/details/84033421
要求:设计一个方法,实现求任意两个整数范围之间的随机数
*核心思路:
*随机区间=(最大值 - 最小值)
*区间随机数=最小值+随机*(随机区间+1)
*
*例如:求30~50之间的随机数
*随机区间= 50- 30 = 20
*若此时与random相乘,产生的随机数为[0,20]不包含20
*所以乘随机数之前+1,即为随机*(20 + 1)此时随机数为[0 ,21)包括20
*此时加上最小值30后的随机数可以取到[30,51]可以取到[30,50]之间的随机数
*注意:
*与随意* 20 + 1的区别,此结果为[
1,21 ] *此时加上最小值30为[31,51),此时取不到30
项目代码:
package com.point9.random;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author 点九博客
* 设计一个方法,实现求任意两个整数范围之间的随机数
* 核心思路:
* 随机区间 = (最大值-最小值)
* 区间随机数 = 最小值 + random*(随机区间+1)
*
* 例如:求30~50之间的随机数
* 随机区间 = 50-30 =20
* 若此时与random相乘,产生的随机数为[0,20)不包含20
* 所以乘随机数之前+1,即为 random*(20+1)此时随机数为[0,21)包括20
* 此时加上最小值30后的随机数可以取到[30,51)可以取到[30,50]之间的随机数
* 注意:
* 与random*20+1的区别,此结果为[1,21)
* 此时加上最小值30为[31,51),此时取不到30
*/
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个自然数:");
int x = sc.nextInt();
System.out.println("请输入第二个自然数:");
int y = sc.nextInt();
if(getRandom2(x,y)<0) {
System.out.println("您输入的数字不合法!");
}else {
System.out.println("系统产生的随机数为:"+getRandom2(x,y));
}
}
//封装:随机数方法--实现方式一:Matn.random()
private static int getRandom1(int x, int y) {
int num = -1;
//说明:两个数在合法范围内,并不限制输入的数哪个更大一些
if(x<0||y<0) {
return num;
}else {
int max = x>y?x:y;
int min = x<y?x:y;
int mid = max -min;//求差
//产生随机数
random = (int) (Math.random()*(mid+1))+min;
}
return num;
}
//封装:随机数方法--实现方式二:Random.nextInt()
private static int getRandom2(int x, int y) {
Random random = new Random();
int num = -1;
//说明:两个数在合法范围内,并不限制输入的数哪个更大一些
if(x<0||y<0) {
return num;
}else {
int max = x>y?x:y;
int min = x<y?x:y;
int mid = max -min;//求差
//产生随机数
num = min+random.nextInt(mid+1);
}
return num;
}
}
测试截图:
Web全栈技术交流
点击链接加入群聊【Web全栈交流群】:https://jq.qq.com/?_wv=1027&k=5rnUzsF