java 生成[min,max]之間的隨機整數
阿新 • • 發佈:2019-02-08
這裡使用Random類的nextInt()方法來生成,生成[min,max]區間的隨機整數公式:
Random rand=new Random();
rand.nextInt(max- min+ 1) + min;
這裡封裝成方法了:
/** * 求[Min,Max]區間之間的隨機整數。 * @param Min 最小值 * @param Max 最大值 * @return 一個Min和Max之間的隨機整數 */ public static int randomIntMinToMax(int Min, int Max) { //如果相等,直接返回,還生成個屁 if(Min==Max) { return Max; } //如果Min比Max大,交換兩個的值,如果不交換下面nextInt()會出錯 if(Min>Max) { Min^=Max; Max^=Min; Min^=Max; } Random rand=new Random();//nextInt()不是靜態方法,不能直接用類名呼叫 return rand.nextInt(Max - Min + 1) + Min; }
例項:
package random; import java.util.Random; public class GetRandom { public static void main(String[] args) { Random rand = new Random(); int Min = 0; int Max = 9; int[] count = new int[Max - Min + 1]; for (int i = 0; i < 10000; i++) { count[randomIntMinToMax(Min, Max)]++; } System.out.println(); char percentCh = '%'; for (int i = 0; i < count.length; i++) { double percent = 100 * (double) count[i] / 10000; System.out.printf("%d生成次數:%-4d,佔百分比:%.2f%c\n", i, count[i], percent, percentCh); } } /** * 求[Min,Max]區間之間的隨機整數。 * * @param Min * 最小值 * @param Max * 最大值 * @return 一個Min和Max之間的隨機整數 */ public static int randomIntMinToMax(int Min, int Max) { // 如果相等,直接返回,還生成個屁 if (Min == Max) { return Max; } // 如果Min比Max大,交換兩個的值,如果不交換下面nextInt()會出錯 if (Min > Max) { Min ^= Max; Max ^= Min; Min ^= Max; } Random rand = new Random();// nextInt()不是靜態方法,不能直接用類名呼叫 return rand.nextInt(Max - Min + 1) + Min; } }
執行結果:
0生成次數:998 ,佔百分比:9.98%
1生成次數:962 ,佔百分比:9.62%
2生成次數:1005,佔百分比:10.05%
3生成次數:1020,佔百分比:10.20%
4生成次數:1020,佔百分比:10.20%
5生成次數:997 ,佔百分比:9.97%
6生成次數:966 ,佔百分比:9.66%
7生成次數:1002,佔百分比:10.02%
8生成次數:1006,佔百分比:10.06%
9生成次數:1024,佔百分比:10.24%
參考部落格: