程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-C++求教,關於生成一組不重復的隨機數

c++-C++求教,關於生成一組不重復的隨機數

編輯:編程解疑
C++求教,關於生成一組不重復的隨機數

函數是長這樣的:(CUS和ROW都是提前define過的int,CUS是數組大小)

 void  randomA(int chosenCus[])
{
    srand((unsigned)time(NULL));
    for (int i = 0; i < CUS; ++i)
    {
        chosenCus[i] = rand() % ROW;
        for (int j = 0; j < i; ++j)
        {
            while (chosenCus[i] == chosenCus[j])
            {
                chosenCus[i] = rand() % ROW;
            }
        }
        cout << chosenCus[i] << " ";
    }
    cout << endl;
}

求問為什麼還是會輸出重復的?
且每次重復時,都是數組的最後一個數與之前某個數重復。
多謝各位!

最佳回答:


你的邏輯有問題,你的while循環的作用是當前的值與已經存在的值進行比較,只能保證當前值與已存在的最後的一個值不相等,不能保證與已存在的最後一個值的前面的值不相等(當數組長度大於等於3時就會出現你說描述的問題)。
舉個例子,假如你的數組長度為3,前三個分別為2,1,最後一個如果是2,則while循環,如果1,與第二個值進行比較,1相等,則while循環,此時如果循環出現2,2與1不相等,但是循環已經結束了。你描述的問題就出現了。

wtucsjianghua
u014767385
u014767385
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved