Re: [問題] 隨機亂數問題請教

看板C_and_CPP作者 (好人超)時間15年前 (2010/10/31 17:44), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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)

10/31 17:47, , 1F
謝謝大大的指點@@
10/31 17:47, 1F
※ 編輯: james732 來自: 140.117.171.46 (10/31 17:56)

10/31 18:17, , 2F
我發現x[5]怪怪 XD
10/31 18:17, 2F

10/31 18:19, , 3F
是超出定義的大小,好像對結果沒影響@@
10/31 18:19, 3F

10/31 18:24, , 4F
真的怪怪的..x[f3+1] 會出現 x[5]
10/31 18:24, 4F
文章代碼(AID): #1CpJgRoB (C_and_CPP)
文章代碼(AID): #1CpJgRoB (C_and_CPP)