生成14個可重複一次的隨機數

Caeser_發表於2017-07-24
private int[] DealStartTiles()
    {
        //Debug.Log(System.DateTime.Now.Millisecond);
        int[] TilesPlatgame=new int[14];
        int[] NumRepeat = new int[14];
        int nraddress = 0;
        TilesPlatgame[0]=0;//init
        NumRepeat[0] = 0;
        int seedr=Mathf.RoundToInt(System.DateTime.Now.Millisecond*Random.value)/10;
        for(int i=0;i<14;i++)
        {
            while(true)
            {
                seedr=Mathf.RoundToInt(System.DateTime.Now.Millisecond*Random.value)/10;
                int Torder = 0;
                if(seedr>=0&&seedr<53)
                {
                    if(NumRepeat[0]!=0)
                    {
                        for(int k=0; k<NumRepeat.Length;k++)
                        {
                            if(seedr==NumRepeat[k])
                            {
                                Torder = 1;
                                break;
                            }else
                            {
                                Torder = 0;
                                break;
                            }
                        }
                    }
                    if (Torder == 1)
                        continue;
                    else
                        break;
                }
            }
            TilesPlatgame[i]=seedr;
            int WhoRepeat = 0;
            for(int j=0; j<i;j++)
            {
                if(TilesPlatgame[i]==TilesPlatgame[j])
                {
                    WhoRepeat = TilesPlatgame[j];
                    NumRepeat[nraddress++] = WhoRepeat;
                    break;
                }
            }
        }
        for(int l=0; l<TilesPlatgame.Length;l++)
        {
            Debug.Log(TilesPlatgame[l]);
        }
        return TilesPlatgame;
    }


總體思想就是,生成一個數放到一個陣列裡,然後用這個數和前面所有數進行對比,重複一次就放到另外一個陣列裡,下次迴圈其中一個分支會因為另外一個陣列非空而開始進行比對,如果該隨機數與重複陣列重複則重新生成隨機數,然後繼續執行上述操作。

相關文章