[問題] 亂數問題

看板C_and_CPP作者 (章魚)時間14年前 (2011/03/06 16:38), 編輯推噓3(3010)
留言13則, 5人參與, 最新討論串2/4 (看更多)
各位好 我剛學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

03/06 16:41, , 1F
你如果除以100這樣不太對,那你0~99都是0,這樣
03/06 16:41, 1F

03/06 16:42, , 2F
機率上不相等,最常用的是取餘數
03/06 16:42, 2F

03/06 16:43, , 3F
不好意思,我看錯了= =他那個是做正規劃
03/06 16:43, 3F

03/06 16:46, , 4F
這算是數學問題,你要把32767分成100份,那一份最多
03/06 16:46, 4F

03/06 16:47, , 5F
327個,你把一個數除以327個,就一定是取得1~99之間
03/06 16:47, 5F

03/06 16:47, , 6F
但是那個r這樣算一定會是1~99,還要用do-while好像
03/06 16:47, 6F

03/06 16:48, , 7F
你先確認一下,哪裡可以查到 rand() 的函數說明
03/06 16:48, 7F

03/06 16:48, , 8F
有點多餘
03/06 16:48, 8F

03/06 16:50, , 9F
RAND_MAX 不一定會是 32767 阿... 這種東西別做太多假設
03/06 16:50, 9F
不好意思 這是從外校DOWNLOAD的投影片上的問題 我也覺得挺模糊的= = ※ 編輯: gauss760220 來自: 140.120.231.161 (03/06 16:51)

03/06 17:44, , 10F
不知道的就google查吧..投影片畢竟是人家吃過再吐出來
03/06 17:44, 10F

03/06 17:45, , 11F
的, 是不是原汁原味無法保證
03/06 17:45, 11F

03/06 19:00, , 12F
「我在想」,用div不用mod的原因是不是「產生第一個重
03/06 19:00, 12F

03/06 19:00, , 13F
覆亂數」的迭代會拉長
03/06 19:00, 13F
文章代碼(AID): #1DSqVhk7 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DSqVhk7 (C_and_CPP)