Re: [問題] C語法的亂數問題

看板C_and_CPP (C/C++)作者 (GG)時間16年前 (2009/10/20 00:45), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《NGboy (今天我NG了)》之銘言: : 初學者的一個問題,在1~49個數當中亂數選取且可以重複,選出來的值總和不能超過 : 360 : 小弟我卻只能寫出產生49個亂數且每個數字不會超過360,但就是不知道該怎麼寫出 : 列出幾個亂數然後計算總和不會超過360 : 下面是我寫的程式碼,或許有些地方有些錯誤,也煩請指教一番,謝謝:D : 有大大說我解釋的不清楚,那我舉例子看看是否會比較清楚: 譬如說... : 第一次亂數產生5個數字: 100,50,25,75,22 這五個數字不超過360 : 第二次亂數產生7個數字: 150,88,17,39,11,12,77,1 這七個數字不超過360 : 大致結果是這樣子的,小弟我卡在不懂該如何寫出上述的這些結果Orz : #include <stdio.h> : #include <stdlib.h> : #include <time.h> : void Rand_MS(void) { : int MS[49], i; : srand(time(NULL)); : for(i=1;i<50;i++) : MS[i]=rand()%360+1; : for(i=1;i<50;i++){ : printf("%d\n",MS[i]); : } : } : int main(void) : { : Rand_MS(); : return 0; : } 感覺題目應該是不限幾個…所以改寫一下你的Rand_MS function void Rand_MS(void) { : int MS[360], i; int index,sum,rn; : srand(time(NULL)); sum=0; : for(i=0;i<360;i++) { : rn=rand()%49+1; sum=sum+rn; if (sum<360) MS[i]=rn; else { index=i; break; } } : for(i=0;i<index;i++){ : printf("%d\n",MS[i]); : } : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.113.229 ※ 編輯: ychch 來自: 118.169.113.229 (10/20 00:47)

10/20 00:57, , 1F
謝謝ychch大的指教 大致上明白了!
10/20 00:57, 1F
文章代碼(AID): #1At9UCSu (C_and_CPP)
文章代碼(AID): #1At9UCSu (C_and_CPP)