hayai  你怎么知道你的程序不会重复?我觉得你的程序一定会出现重复的整数阿,aryAll[i] = aryAll[ind];如果ind=0,i=0,aryAll[0]=0,temp=0,如果ind=4,i=0,aryAll[4]=4,temp=0??自己都不知道说些什么了,反正你的步骤不能让人服气(如不出说明的话),所以请你写一份证明材料给大伙看看,让我们大家服气才好啊,行动要快哦~~~~

解决方案 »

  1.   

    用HashSet,或者生成随机数的时候加一个判断
      

  2.   

    用HashSet,或者生成随机数的时候加一个判断
      

  3.   

    我那个algorithm事实上是程序模拟洗牌的算法,拿来这里正好用得上。
    selecting n number in integers [0, m).
    if n > m,肯定要有重复,所以不讨论。if n <= m,就像在一副牌里拿n张,一定不会重复的。
    To:star821116,我实在是认为用set太慢。每一次都要判断,然后如果set里已经有了,就要在random一次。如果,n = m; 那么,当你取n个数字时,死定了。有没有听过bogo sort(random sort)?可能,你“永远”都取不到这最后一个数字。当然啦,永远是不可能的。不防你写个程序试试。n = m = 100 好了。
    To:keybook,不想回答你的问题,对牛弹琴。
      

  4.   

    今天晚上结贴,分数准备结给keybook(keybook) 人家分数少嘛。
    public class Shuffler
    {   // condition: selecting n int from 0-m when n is close to m.
        private static int m_intTotal = 0;
        private static int m_intPoint = 0;    public static void initialize(int total)
        {
            initialize(total, 0);
        }
        public static void initialize(int total, int min)
        {
            m_intTotal = total;
            if (m_intTotal > 0)
            {
                m_intPoint = 0;
                m_aryValue = new int[m_intTotal];
                for (int i = 0; i < m_intTotal; i++)
                    m_aryValue[i] = i + min;
            }
        }    public static int random()
        throws RuntimeException
        {
            if (m_aryValue == null)
                throw new RuntimeException("Shuffler is not initialized");
            if (m_intPoint == 0)
                randomize();
            int value = m_aryValue[m_intPoint];
            m_intPoint = (m_intPoint + 1) % m_intTotal;
            return value;
        }    ///////////////////////////////////////////////////////////////////////////    private static int[] m_aryValue;
        private static void randomize()
        {
            for (int i = 0; i < m_intTotal; i++)
            {
                int ind = (int)(Math.random() * m_intTotal);
                swap(i, ind);
            }
        }
        private static void swap(int a, int b)
        {
            int temp = m_aryValue[a];
            m_aryValue[a] = m_aryValue[b];
            m_aryValue[b] = temp;
        }
    }