Redian新闻
>
请教一个随机数,概率相关的问题
avatar
请教一个随机数,概率相关的问题# JobHunting - 待字闺中
c*t
1
在C++中使用 "rand() % 100" 则会产生[0, 99]之间的100个随机数
如果想要以5%的概率去做某件事情,那么我们可以
1.
if (rand() % 100 < 5)
{
...
}
或者
2.
if (rand() % 100 % 20 == 0)
{
...
}
请问版上的大牛,这两种方式是不是等价的呢?还是说会有细微的不同?
avatar
c*e
2
第二个咋看也不像5%,怎么也要20%了吧
avatar
c*t
3
打错了,已修正,多谢,呵呵

【在 c********e 的大作中提到】
: 第二个咋看也不像5%,怎么也要20%了吧
avatar
t*h
4
貌似没啥区别 不行你跑一下试试?

【在 c******t 的大作中提到】
: 在C++中使用 "rand() % 100" 则会产生[0, 99]之间的100个随机数
: 如果想要以5%的概率去做某件事情,那么我们可以
: 1.
: if (rand() % 100 < 5)
: {
: ...
: }
: 或者
: 2.
: if (rand() % 100 % 20 == 0)

avatar
c*t
5
我也觉得没啥区别
可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好
我百思不得其解(当然他也不一定对),就想到论坛上来请教一下

【在 t*********h 的大作中提到】
: 貌似没啥区别 不行你跑一下试试?
avatar
f*w
6
他的理由是啥?

【在 c******t 的大作中提到】
: 我也觉得没啥区别
: 可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好
: 我百思不得其解(当然他也不一定对),就想到论坛上来请教一下

avatar
l*n
7
你写个程序profiling一下就好了。

【在 c******t 的大作中提到】
: 我也觉得没啥区别
: 可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好
: 我百思不得其解(当然他也不一定对),就想到论坛上来请教一下

avatar
j*3
8
感觉第二个好一些吧。
这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。
avatar
t*h
9
good point

【在 j*****3 的大作中提到】
: 感觉第二个好一些吧。
: 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
: 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。

avatar
l*n
10
第二个怎么个更均匀法?如果各方面条件一致的话。

【在 j*****3 的大作中提到】
: 感觉第二个好一些吧。
: 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
: 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。

avatar
c*t
11
烦请详细解释一下为什么“如果次数少的话,产生的随机数可能会分布不够均匀”?
想不通

【在 j*****3 的大作中提到】
: 感觉第二个好一些吧。
: 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
: 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。