PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 產生0~1之間 不包含0有小數點的亂數
作者:
abab7974
(幻滅)
2014-06-19 16:55:50
我是使用
((double)rand()/RAND_MAX )
來產生0~1之間有含小數點的均勻分布數
可是最近弄一個東西需要log(1/u)
u是 0~1之間有含小數點的均勻分布數
可是這樣會導致當u=0的時候 log(1/g)會出現-1.#inf
所以我想知道C++大於0的最小數是多少
讓當u=0時可以加上那個最小數
因為我GOOGLE C++ 跟最小值 會出現一堆 XXX數取最小甚麼的...
謝謝
作者:
donkeychen
(Bad_To_The_Bone)
2014-06-19 17:05:00
do { } until { log(1/u) != -1 } 再取一次呢?看你的目的是不要0 而已..
作者:
abab7974
(幻滅)
2014-06-19 17:21:00
嗯..我當初想說是0的話 就直接給他最小數比較簡單
作者:
blackwindy
(黑色的風)
2014-06-19 17:25:00
那樣做的話機率會不均等(最小數的機率變高) 不如重骰
作者: Keiichi (Keiichi)
2014-06-19 17:31:00
(rand()+1.0)/(RAND_MAX+1.0)
作者:
blackwindy
(黑色的風)
2014-06-19 17:54:00
std::uniform_real_distribution<double> unif(l, u);
作者:
abab7974
(幻滅)
2014-06-19 17:56:00
可是我的想法是當它骰到0就是最小數 如果骰掉0又重骰就表示最小數的機率變低了
作者:
blackwindy
(黑色的風)
2014-06-19 18:02:00
不取0的意思而已
作者: HudsonE
2014-06-19 18:28:00
最小數本來就會骰到, 所以最小數的機率會變兩倍
作者:
iamnotgm
(ä¼½è—之黑)
2014-06-19 19:19:00
重骰就好了 你直接取最小數反而放大了最小數的機率
作者:
LPH66
(-6.2598534e+18f)
2014-06-19 19:53:00
如果原 PO 還是沒轉過來的話, 想想骰個骰子但我不想要骰 1如果骰到 1 就當 2 那 2 的機率就是別人的兩倍正確的做法是骰到 1 重骰, 這樣才是平均的在這裡只是變成一個 RAND_MAX 面骰而已...
作者:
abab7974
(幻滅)
2014-06-19 20:36:00
嗯..似乎是這樣 那我之前的想法搞錯了 謝指教
繼續閱讀
[問題] 有其他程式語言經驗的C++新手想起步
dwadefans
Fw: [請益] ffmpeg
gn00618777
Re: [問題] 函式的參數
Killercat
[問題] 函式的參數
chuckAI
[問題] CodeBlock軟體使用問題
dwadefans
[問題] C語言有辦法測該程式的記憶體使用量嗎?
dave155272
[問題] 讀取TXT中大量資料時 出現已經停止運作
sword0921
[問題] 這種sample code要怎樣上手呢?
eleghost
[問題] 解析順序問題
pujols05
[問題] 很奇怪的問題 scanf
DirKai
Links
booklink
Contact Us: admin [ a t ] ucptt.com