[問題] 有辦法產生[0,1]區間的亂數嗎?

看板C_and_CPP (C/C++)作者 (OceanSupply)時間13年前 (2013/01/26 01:36), 編輯推噓4(408)
留言12則, 8人參與, 最新討論串1/1
我是用C++ 取時間亂數然後(rand()%10000)*0.0001 這樣子只能作到[0,1) 沒辦法產生[0,1] 也就是說我寫出來的最大值不會等於1 請問有甚麼辦法可以產生[0,1]的亂數? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.121.225.131

01/26 01:38, , 1F
實際執行的結果, [0,1)跟[0,1]應該是相似到難以分辨吧
01/26 01:38, 1F

01/26 01:38, , 2F
這並不會等於1啊
01/26 01:38, 2F

01/26 01:39, , 3F
%10000只會有0~9999
01/26 01:39, 3F
對對,我的意思就是用我原本的寫法最大值不會等於1,可是我希望能做到最大值會等於1 寫得不清楚造成誤會真不好意思 ※ 編輯: SimonLi 來自: 122.121.225.131 (01/26 01:41)

01/26 01:47, , 4F
(rand()%10000 + 1)*0.0001 ?
01/26 01:47, 4F

01/26 01:48, , 5F
那就%10001不就好了?
01/26 01:48, 5F
嗯嗯 這個方法我剛剛也有想到 不過我發現我拐的彎太大了 有熱心鄉民跟我說 直接讓 rand()/ 最大值就會有0~1的小數亂數產生了! ※ 編輯: SimonLi 來自: 122.121.225.131 (01/26 01:53)

01/26 10:58, , 6F
rand()/最大值 無法產生你要的結果喔
01/26 10:58, 6F

01/26 10:59, , 7F
rand()出來的亂數分佈的區域沒那麼廣
01/26 10:59, 7F

01/26 10:59, , 8F
%10001 比較實在
01/26 10:59, 8F

01/26 11:41, , 9F
是 (double)rand() / RAND_MAX; 剛好是 [0,1] 浮點亂數
01/26 11:41, 9F

01/26 16:19, , 10F
http://ppt.cc/yS97 I think it's a good start to
01/26 16:19, 10F

01/26 16:20, , 11F
learn new generator
01/26 16:20, 11F

01/26 21:52, , 12F
樓上正解y
01/26 21:52, 12F
文章代碼(AID): #1H0iA8Ew (C_and_CPP)
文章代碼(AID): #1H0iA8Ew (C_and_CPP)