作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] 隨機亂數問題請教
時間Sun Oct 31 17:44:57 2010
※ 引述《rex921 (小雷)》之銘言:
: int f1,f2,x[5],f3;
: for(f1=0;f1<=4;f1++){
: x[f1]=f1;
: }
x[] 的內容是 {0, 1, 2, 3, 4}
: for(f1=0;f1<=4;f1++){
: f2=rand()%(5-f1);
: cout <<x[f2]<<"\t";
: for(f3=f2;f3<=4;f3++){
: x[f3]=x[f3+1];
: }
: }
: 紅色那段,看不懂他的用意
: 上來請教@@
(1) 在五個數裡面,任挑一個
0至4的數字f2,並輸出x[f2]
假如f2是1, 那就輸出x[1]=1
(2) 從f2開始,把x[f2]至x[4]的數字都往前移一個位置
如果f2是1,就是f[1]=f[2],f[2]=f[3],f[3]=f[4]
結果x就會變成{0, 2, 3, 4, 4}, 這個步驟就把已經挑出的1給移除掉
(3) 這個時候f1會遞增成1,f2就變成一個
0至3的隨機數字,並輸入x[f2]
(4) 同上述的(2),把x[f2]=x[f2+1], x[f2+1]=x[f2+2] ...
因此,每次挑過的數字就會被蓋掉,而挑選的範圍也會越來越小
最後所有的數字都挑完,這個程式也就結束了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (10/31 17:45)
推 rex921:謝謝大大的指點@@ 10/31 17:47
※ 編輯: james732 來自: 140.117.171.46 (10/31 17:56)
推 loveme00835:我發現x[5]怪怪 XD 10/31 18:17
推 rex921:是超出定義的大小,好像對結果沒影響@@ 10/31 18:19
→ tropical72:真的怪怪的..x[f3+1] 會出現 x[5] 10/31 18:24