Java实现任意两个整数范围之间的随机数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

QQ群二维码

猜你喜欢

转载自blog.csdn.net/Point9/article/details/84033421