1. 程式人生 > >Java實現任意兩個整數範圍之間的隨機數

Java實現任意兩個整數範圍之間的隨機數

要求:設計一個方法,實現求任意兩個整數範圍之間的隨機數


 *核心思路:
 *隨機區間=(最大值 - 最小值)
 *區間隨機數=最小值+隨機*(隨機區間+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群二維碼