看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)
NGboy:謝謝ychch大的指教 大致上明白了! 10/20 00:57