c******t 发帖数: 1500 | 1 在C++中使用 "rand() % 100" 则会产生[0, 99]之间的100个随机数
如果想要以5%的概率去做某件事情,那么我们可以
1.
if (rand() % 100 < 5)
{
...
}
或者
2.
if (rand() % 100 % 20 == 0)
{
...
}
请问版上的大牛,这两种方式是不是等价的呢?还是说会有细微的不同? |
c********e 发帖数: 186 | |
c******t 发帖数: 1500 | 3 打错了,已修正,多谢,呵呵
【在 c********e 的大作中提到】 : 第二个咋看也不像5%,怎么也要20%了吧
|
t*********h 发帖数: 941 | 4 貌似没啥区别 不行你跑一下试试?
【在 c******t 的大作中提到】 : 在C++中使用 "rand() % 100" 则会产生[0, 99]之间的100个随机数 : 如果想要以5%的概率去做某件事情,那么我们可以 : 1. : if (rand() % 100 < 5) : { : ... : } : 或者 : 2. : if (rand() % 100 % 20 == 0)
|
c******t 发帖数: 1500 | 5 我也觉得没啥区别
可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好
我百思不得其解(当然他也不一定对),就想到论坛上来请教一下
【在 t*********h 的大作中提到】 : 貌似没啥区别 不行你跑一下试试?
|
f*******w 发帖数: 1243 | 6 他的理由是啥?
【在 c******t 的大作中提到】 : 我也觉得没啥区别 : 可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好 : 我百思不得其解(当然他也不一定对),就想到论坛上来请教一下
|
l*n 发帖数: 529 | 7 你写个程序profiling一下就好了。
【在 c******t 的大作中提到】 : 我也觉得没啥区别 : 可是今天一个coworker坚持认为方法一和方法二有细微差别,同时第二种方法更好 : 我百思不得其解(当然他也不一定对),就想到论坛上来请教一下
|
j*****3 发帖数: 106 | 8 感觉第二个好一些吧。
这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。 |
t*********h 发帖数: 941 | 9 good point
【在 j*****3 的大作中提到】 : 感觉第二个好一些吧。 : 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够 : 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。
|
l*n 发帖数: 529 | 10 第二个怎么个更均匀法?如果各方面条件一致的话。
【在 j*****3 的大作中提到】 : 感觉第二个好一些吧。 : 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够 : 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。
|
c******t 发帖数: 1500 | 11 烦请详细解释一下为什么“如果次数少的话,产生的随机数可能会分布不够均匀”?
想不通
【在 j*****3 的大作中提到】 : 感觉第二个好一些吧。 : 这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够 : 均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。
|