Re: [問題] 關於隨機變數
※ 引述《iulan3122 (ja)》之銘言:
: void generateRand(int r[], int sz)
: {
: int i, now, a;
: now = 0;
: do
: {a = rand() %10;
: for(i=0; i<now; i++)
: if(a == r[i]) break;
: if(i == now) {r[now] = a;now++;}
: }while(now<sz);
: }
我猜這個function的目的是在已知size為sz的int array中填入互不相同的數
(範圍為0~9)
: 這邊看不是很懂耶
: if(a == r[i]) break; 這段是什麼意思
它從r[0]開始填值
每次輪到r[now]的時候生一個0~9的亂數,檢查r[0]~r[now-1]有沒有用過這個數
有的話會break,下面i==now就不會成立,會再回到生亂數的地方 a=rand()%10
沒有的話就填進去,然後把now加一
: while(now<sz); 為什麼要在這個條件下
因為外來的array已知size為sz,故只有r[0]~r[sz-1]是可用的
now>=sz的情況下r[now]不可用
: 小弟第一次發文 請求高手解答
這個function在sz>10的情況下感覺會爆炸?
--
「…那樣的話就證明那個骷髏知道你必須知道的事情,
它是帶著完成使命的榮耀來向你展示自己的殘骸的。」
安倍吉俊,「灰羽連盟」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.50.219
推
04/26 02:41, , 1F
04/26 02:41, 1F
討論串 (同標題文章)