→ NGboy:謝謝ychch大的指教 大致上明白了! 10/20 00:57
※ 引述《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)