Java實現任意兩個整數範圍之間的隨機數
阿新 • • 發佈:2018-12-16
要求:設計一個方法,實現求任意兩個整數範圍之間的隨機數
*核心思路:
*隨機區間=(最大值 - 最小值)
*區間隨機數=最小值+隨機*(隨機區間+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