这样试试:
Random ran = new Random();
for(int i = 0;i < 5;i++){
      int a = ran.nextInt(20);
      int b = 1 + ran.nextInt(4);
      int c = 1 + ran.nextInt(4);
    }

解决方案 »

  1.   

    Random ran = new Random();放在外面就行了
      

  2.   

    sorry没说清楚应该设不同的种子,否则每次都是同样的数其实像上面所说的吧Random ran = new Random();放在外面就可以是随机的了但是每次运行这个程序的结果还是会相同的
      

  3.   

    以下是个比较不错的随机数生成算法
    /**
     *
     * <p>Program name: Stochastic</p>
     * <p> </p>
     * <p>Purpose: </p>
     * <p> </p>
     * <p>Author: Xu Jingqi</p>
     * <p> </p>
     * <p>LastUpdatedTime: 16/11/02 </p>
     */
    public abstract class Stochastic
    {
        protected int seed=0;
        protected static final float  FLT_MAX =1.0F - 1.192092896e-07F;
        protected static final float  FLT_AM  =1.0F / 2147483563.0F;
        protected static final double DBL_MAX =1.0D - 1.192092896e-07F;
        protected static final double DBL_AM  =1.0D / 2147483563.0D;    private static final StochasticException err_hilo=new StochasticException("invalid lo - hi range");    /**
         *
         */
        public Stochastic()
        {
            seed = (int)System.currentTimeMillis();
        }    /**
         *
         * @param seed
         */
        public Stochastic(int seed)
        {
            this.seed=seed;
        }    /**
         *
         * @return
         */
        public abstract int nextValue();    /**
         *
         * @return
         */
        final public float nextFloat()
        {
            nextValue();
            float temp=FLT_AM * seed;
            if(temp > FLT_MAX)
                return FLT_MAX;
            else
                return temp;
        }    /**
         *
         * @return
         */
        final public double nextDouble()
        {
            nextValue();
            double temp=DBL_AM * seed;
            if(temp > DBL_MAX)
                return DBL_MAX;
            else
                return temp;
        }    /**
         * Get next value between hi and low extrema
         * @param lo
         * @param hi
         * @return
         */
        final public int nextValue(int lo,int hi)
        {
            if(lo>=hi)
                throw err_hilo;
            return (int)((long)lo+((long)hi-(long)lo)*nextFloat());
        }    /**
         * Get next value between hi and low extrema
         * @param hi
         * @return
         */
        final public int nextValue(int hi)
        {
            //return rangeed value
            return (int)((float)hi* nextFloat());
        }    /**
         * Get next uniform deviate as an float within a range
         * @param lo
         * @param hi
         * @return
         */
        final public float nextFloat(float lo,float hi)
        {
            if(lo<hi)
                throw err_hilo;
            return lo+(hi-lo)*nextFloat();
        }    /**
         * Get next uniform deviate as an double within a range
         * @param lo
         * @param hi
         * @return
         */
        final public double nextDouble(double lo,double hi)
        {
            if(lo<hi)
                throw err_hilo;
            return lo+(hi-lo)*nextDouble();
        }
    }
      

  4.   

    /**
     *
     * <p>Program name: StochasticLevel3</p>
     * <p> </p>
     * <p>Purpose: </p>
     * <p> </p>
     * <p>Author: Xu Jingqi
     * <p> </p>
     * <p>LastUpdatedTime: 6/11/02</p>
     */
    public class StochasticLevel3 extends Stochastic
    {
        private static final int  M1 = 2147483563;
        private static final int  A1 =      40014;
        private static final int  Q1 =      53668;
        private static final int  R1 =      12211;    private static final int  M2 = 2147483399;
        private static final int  A2 =      40692;
        private static final int  Q2 =      52774;
        private static final int  R2 =       3791;    private static final int TBL_LEN = 32;
        private static final int DIV     = 1 + (M1 - 1) / TBL_LEN;    private int   dummy =123456789;
        private int   hold  =0;
        private int[] val   =new int[TBL_LEN];    /**
         *
         */
        public StochasticLevel3()
        {
            super();
            if(seed>0)
                seed*=-1;
        }    /**
         *
         * @param seed
         */
        public StochasticLevel3(int seed)
        {
            super(seed);
            if(seed>0)
                seed*=-1;
        }    /**
         *
         * @return
         */
        public int nextValue()
        {
            int j,k;
            if(seed<=0L)
            {
                //initialize tables
                if(-seed<1)
                    seed=1;
                else
                    seed=-seed;
                dummy=seed;            //load shuffle table
                for(j=TBL_LEN+7;j>=0;j--)
                {
                    k=seed/Q1;
                    seed=A1 * (seed - k * Q1) - k * R1;
                    if(seed<0)
                        seed+=M1;
                    if(j<TBL_LEN)
                        val[j]=seed;
                }
                hold=val[0];
            }
            k=seed/Q1;
            seed=A1 * (seed -k * Q1) - k * R1;
            if(seed<0)
                seed+=M1;
            k=dummy/Q2;        dummy = A2 * (dummy - k * Q2) - k * R2;
            if(dummy<0)
                dummy+=M2;
            j=hold/DIV;
            hold=val[j]-dummy;
            val[j]=seed;
            if(hold<1)
                hold+=M1-1;
            return seed;
        }    /**
         * 主函数,用于测试
         * @param args
         */
        public static void main(String[] args)
        {
            int bucket[]=new int[5000];
            StochasticLevel3 rand=new StochasticLevel3();
            for(int i=0;i<100000;i++)
                bucket[(int)(rand.nextDouble()*bucket.length)]++;
            for(int i=0;i<bucket.length;i++)
                System.out.print(bucket[i]+" ");
        }
    }
      

  5.   

    /**
     *
     * <p>Program name: StochasticException</p>
     * <p> </p>
     * <p>Purpose: </p>
     * <p> </p>
     * <p>Author: Xu Jingqi</p>
     * <p> </p>
     * <p>LastUpdatedTime: 16/11/02</p>
     */
    public class StochasticException extends RuntimeException
    {
        /**
         *
         */
        public StochasticException()
        {
            super();
        }    /**
         *
         * @param s
         */
        public StochasticException(String s)
        {
            super(s);
        }
    }