1. 程式人生 > >java 生成[min,max]之間的隨機整數

java 生成[min,max]之間的隨機整數

這裡使用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%

參考部落格: