亂數問題?? |
缺席
|
bvd
一般會員 發表:9 回覆:12 積分:4 註冊:2006-10-31 發送簡訊給我 |
我宣告了2個一維陣列:int row[4096],column[4096];
然後用for迴圈走若干(4096)次得row[r]=((rand()1) 1)*5; column[c]=((rand()1) 1)*5; 因為我希望取兩組亂數pattern,讓我在程式中能重複使用同一組亂數..... 再做下列動作: r=0;c=0; for(int j=0;j<64;j ) { for(int i=0;i<64;i ) { a=row[r]; b=column[c]; t[a][b]=p[i][j]; //t[512][512] , p[64][64] r ; c ; }} 結果約有10%的重複,也就是t[512][512]上沒有恰好4096個不重複點(約有400個重複,也就是只有3700個點在t[ ][ ]中)... 我知道是要要設條件,如果出現重複就捨棄,再取一次亂數,但由於我是取2個陣列來存,一個當x座標;另一個當y座標,若x座標相同但y座標不同(或反之)就無所謂;....不巧的是...就是有xy座標都一樣的時候,..... 所以想請問前輩們指導......讓迴圈裡的t[a][b]不要重複的條件該如何寫?? 還是前輩們有其它更好的寫法...??方便指導,非常感謝!!!! 但如果我使用int a=((rand()1) 1)*5; int b=((rand()1) 1)*5; 同樣在上述迴圈執行就沒有重複的情況發生,但是必須關閉程式再開,才能得到同樣的一組亂數...
------
加強磨鍊 編輯記錄
bvd 重新編輯於 2008-05-27 12:14:28, 註解 無‧
|
bvd
一般會員 發表:9 回覆:12 積分:4 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |