看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC in Linux 問題(Question): 利用亂數跑模擬骰子的程式,簡單來說就是擲骰子,每按ENTER就出現一個點數值 但我連按ENTER,資料會卡卡的,像是計算速度不夠快 預期的正確結果(Expected Output): dice number is : 2 dice number is : 1 dice number is : 4 dice number is : 3 dice number is : 5 dice number is : 1 dice number is : 3 希望跑出來就是這樣的結果 錯誤結果(Wrong Output): dice number is : 3 dice number is : 3 dice number is : 2 dice number is : 2 dice number is : 2 dice number is : 2 dice number is : 2 dice number is : 1 dice number is : 1 dice number is : 1 dice number is : 1 dice number is : 1 dice number is : 1 會出現連續一樣的結果好幾次(秒)後才會有新的結果 程式碼(Code):(請善用置底文網頁, 記得排版) int result; double r01, r17; while (getchar() != EOF) { //random seed srand( (unsigned) time (NULL) ); //[0, 1) r01 = (double) ( rand() / (RAND_MAX + 1.0) ); //[1, 7) , like a dice r17 = r01 * (7.0 - 1.0) + 1.0; //output result = (int) (r17); printf("dice number is : %d", result); } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.25.244 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1407930666.A.A83.html
fireslayer: srand(...)拿出While外面 08/13 19:53
一秒見效,所以是每次取seed都會花很多時間計算囉?? 感謝 ※ 編輯: FirstAnd15th (114.34.25.244), 08/13/2014 20:07:13
x000032001: 去弄清楚srand作用 08/13 20:21
diabloevagto: 你問題不在於速度不夠快,問題是你給進 srand 的值 08/13 20:45
感謝,我會去弄清楚 ※ 編輯: FirstAnd15th (114.34.25.244), 08/13/2014 22:30:00
sorryandbye: 這我前幾天學到,終於可以在ptt派上用場Q_Q 08/13 22:48
sorryandbye: srand()函式是根據()內的種子(seed)做數學運算 08/13 22:49
sorryandbye: 你的種子(seed=time)相同,得到的數字當然一樣.... 08/13 22:49
我懂了!! 所以不是速度慢,是秒針就是跑這個速度 XDD
putumaxally: 教你rand跟srand的人真糟糕 08/13 23:00
我是自學C,不能怪老師,只能怪自己沒用功嚕 ※ 編輯: FirstAnd15th (114.34.25.244), 08/14/2014 11:15:46
vecstar: 蠻多鄉民喜歡酸新手來顯示自己厲害,看多就習慣,勿介意 08/14 21:58
sorryandbye: 對不起Q_Q 我是超新手 樓上要鞭請鞭小力一點 08/15 00:50