作者NGboy (今天我NG了)
看板C_and_CPP
標題[問題] C語法的亂數問題
時間Tue Oct 20 00:04:28 2009
初學者的一個問題,在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;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.176.46
1F:→ james732:直覺方式:算出總和,如果超過360就整個重來 10/20 00:06
2F:→ james732:這種方式在很倒楣的情況下會跑很久 XDDD 10/20 00:06
3F:推 QQ29:反過來想呢? 用360-rand() 然後剩下最後一個就拿 剩下的值 10/20 00:19
4F:推 snowlike:360切48刀如何,其實題目的條件不清不楚的 10/20 00:21
5F:→ james732:總共要拿幾個數來加啊?這個問題應該挺重要的...?? 10/20 00:25
※ 編輯: NGboy 來自: 125.224.176.46 (10/20 00:33)
6F:推 james732:我的問題:總共要加總幾個數字呢?還是說不管幾個,就是 10/20 00:36
7F:→ james732:不能超過360就對了呢? 10/20 00:36
8F:推 VictorTom:推題目不清不楚, 1~49個數??是從1~49取數, 還是有已知的 10/20 00:40
9F:→ VictorTom:數列有49個已知的數要去取??還是不管怎樣就是要取49個亂 10/20 00:41
10F:→ VictorTom:數出來使其合小於360??(最後這個不限定亂數範圍很難取) 10/20 00:42
11F:推 QQ29:你現在題目還是很怪 取幾個? 49個數字是已經知道的? 10/20 00:42
12F:→ QQ29:如果是初學者 搞不好題目就只是簡單要你亂數幾個數不要爆掉 10/20 00:43
13F:→ QQ29:印出XD 10/20 00:43
14F:→ VictorTom:看了例子之後更不懂Orz 10/20 00:44
15F:→ NGboy:james大大 加總幾個數字不重要 重點在於和不超過360 10/20 00:47
16F:→ NGboy:1~49個數字去取出 取出幾個都沒關係 總和不超過360為前提 10/20 00:48
17F:推 QQ29:1~49已經知道? 10/20 00:51
18F:推 VictorTom:那就跑個迴圈從1~49, 然後取亂數?~360之間, 每次取完就 10/20 00:51
19F:→ VictorTom:和之前的總和累加, 只要爆了就捨棄最後一個數並把結果輸 10/20 00:51
20F:→ VictorTom:出, 大概就是這樣吧?? 10/20 00:52
21F:→ NGboy:嗯嗯 謝謝Tom大 這方法好像也可以!! 感恩:D 10/20 00:52
22F:→ VictorTom:剛想了一下, 因為不知道包不包含0可以取, 可以取的話不 10/20 00:53
23F:→ VictorTom:要等爆了再一次輸出, 改成只要沒爆就把目前取的數印出來 10/20 00:53
24F:→ VictorTom:吧; 如果最小是1, 那開一個[360]的array就夠存結果了:) 10/20 00:54
25F:→ NGboy:喔~原來可以這麼寫 再次謝謝Tom大 10/20 00:56
26F:推 VictorTom:對不起, 我後來想起來只要取1~49個數就好, 所以開[49] 10/20 01:08
27F:→ VictorTom:的array來放就應該夠的; 果然年紀大了應該早點睡....Orz 10/20 01:09
28F:推 FoxQ:無關程式 第二個例子的合是395耶XD 10/21 20:49