返回列表 發帖

[隨堂測驗] 產生不重複之隨機亂數 (二)

本帖最後由 鄭繼威 於 2022-4-16 12:03 編輯

假設箱子裡裝了38顆球,每顆球上皆印有號碼 (1 ~ 38),試模擬自箱子取出10顆球,你會拿到哪些號碼的球呢?(每取出一顆球皆花費 0.5 秒)

  1. #include<cstdlib>
  2. #include<iostream>
  3. #include<ctime>
  4. using namespace std;
  5. int main()
  6. {
  7.     srand(time(NULL));
  8.     int n[10];        //宣告長度為10的陣列
  9.     //沒有外面只有裡面(執行1次)
  10.     for(int j=0; j<10; j++)     //執行10次的迴圈->抽10顆球
  11.     {
  12.         n[j]=rand()%38+1;  //1~38放入陣列裡->模擬抽第j球的動作
  13.         //判斷是否有重複  
  14.         for(int k=0; k<j; k++) //跑j次迴圈->決定要檢查j個數  
  15.         {
  16.             if(n[j]==n[k]) //k位置跟原本的j位置比較是否有相等  
  17.             {
  18.                //如果有的話就跳出去(break)此迴圈,並回去(j--)原本的位置
  19.                j--;
  20.                break;              
  21.             }
  22.         }
  23.     }  
  24.     cout<<"我拿到的球為: ";
  25.     for(int j=0; j<10; j++)
  26.     {
  27.         cout<<n[j]<<" ";   //把剛剛抽到的球印出來(機數+空格)
  28.         _sleep(500);
  29.     }  
  30.     cout<<endl<<endl;  
  31.     system("pause");
  32.     return 0;   
  33. }
複製代碼

返回列表