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