看板 C_and_CPP 關於我們 聯絡資訊
各位好 我剛學C++ 目前學到有關亂數rand()的寫法 看了幾次還是不太懂 所以想po上來跟大家討論 rand()是否為0~32767的數值?(這部分我不知有無理解錯誤) 以下為想問的程式 randomize an integer in [0,100) : const int bucket = RAND_MAX / 100; do {r=rand()/bucket;} while (r>= 100); 就我的想法是 RAND_MAX為32767 除以100後 bucket=327(因為整數除法) 接下來的do~while loop就看不太懂他在做什麼動作了 請高手指點 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.231.161
diabloevagto:你如果除以100這樣不太對,那你0~99都是0,這樣 03/06 16:41
diabloevagto:機率上不相等,最常用的是取餘數 03/06 16:42
diabloevagto:不好意思,我看錯了= =他那個是做正規劃 03/06 16:43
diabloevagto:這算是數學問題,你要把32767分成100份,那一份最多 03/06 16:46
diabloevagto:327個,你把一個數除以327個,就一定是取得1~99之間 03/06 16:47
diabloevagto:但是那個r這樣算一定會是1~99,還要用do-while好像 03/06 16:47
purpose:你先確認一下,哪裡可以查到 rand() 的函數說明 03/06 16:48
diabloevagto:有點多餘 03/06 16:48
akasan:RAND_MAX 不一定會是 32767 阿... 這種東西別做太多假設 03/06 16:50
不好意思 這是從外校DOWNLOAD的投影片上的問題 我也覺得挺模糊的= = ※ 編輯: gauss760220 來自: 140.120.231.161 (03/06 16:51)
loveme00835:不知道的就google查吧..投影片畢竟是人家吃過再吐出來 03/06 17:44
loveme00835:的, 是不是原汁原味無法保證 03/06 17:45
tropical72:「我在想」,用div不用mod的原因是不是「產生第一個重 03/06 19:00
tropical72:覆亂數」的迭代會拉長 03/06 19:00