全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1349
推到 Plurk!
推到 Facebook!

亂數問題??

缺席
bvd
一般會員


發表:9
回覆:12
積分:4
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-23 17:27:41 IP:140.136.xxx.xxx 訂閱
我宣告了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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-03 14:27:23 IP:140.136.xxx.xxx 訂閱
我後來想到用一個check[512][512]={0};
做while(check[x][y]==1)
{
x=a[r ];
y=b[c ];
}
check[i][j]=1;
好像很笨,但暫時解了我的問題!!
------
加強磨鍊
系統時間:2024-04-20 11:59:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!