当前位置:  开发笔记 > 编程语言 > 正文

随机算法

如何解决《随机算法》经验,为你挑选了2个好方法。

我需要一些关于随机性算法的帮助.所以问题是.

有8个事件将在8小时内发生.事件可能在随机时间发生.现在它意味着每秒钟发生事件的可能性为50 /(8*60*60)= .001736.如何使用随机生成算法执行此操作?

我可以得到随机数

int r = rand();
double chance = r/RAND_MAX;
if(chance < 0.001736)
    then event happens
else
    no event

但大多数时候rand()返回0和0 <0.001736并且我收到的事件多于所需的事件.

有什么建议?


抱歉,我忘记提及我计算机会为双倍机会=(static_cast)(r)/(static_cast)(RAND_MAX);


它从static_cast中删除了double

double chance =(double)r /(double)(RAND_MAX);



1> Greg Hewgill..:

两个rRAND_MAX是整数,所以表达式

double chance = r / RAND_MAX;

用整数运算计算.尝试:

double chance = 1.0 * r / RAND_MAX;

这将导致划分为浮点划分.

但是,更好的解决方案是使用随机函数,该函数首先返回浮点值.如果使用整数随机数生成器,则在概率计算中会出现一些偏差错误.



2> Sniggerfardi..:

如果您选择是否每秒都发生一次事件,则会发生0事件更改或发生8*60*60事件.如果50个事件是约束,则在8小时期间选择50个随机时间并将其存储起来.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有