关于概率的问题!谢谢!!!

kevintamin 2005-09-13 11:39:42
现在正在写一段代码. 要求以概率0.05执行一个程序,应该怎么写呢??? 是否要用到随机数???
我准备这样写

srand((unsigned)time(NULL));
int probability=1+(int)((rand()/(double)RAND_MAX)*100);
if(probability==1||probability==2||probability==3||probability==4||
probability==5)
{
则执行程序!!!
}

感觉这样写是有问题的,
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-09-13
  • 打赏
  • 举报
回复
不过你可以对你的程序做一个测试
int count = 0;
for(int i=0p i<1000000;i++)
{
srand((unsigned)time(NULL));
int probability=1+(int)((rand()/(double)RAND_MAX)*100);
if(probability==1||probability==2||probability==3||probability==4||
probability==5)
{
count++;
}
}

最后看看count值是不是30000左右,就可以确定你的方法是否合适了
xiaocai0001 2005-09-13
  • 打赏
  • 举报
回复
由于概率具有统计特性
我想用如下方法可否

const int trycount = 10000;
int count = 0;
double val;
srand((unsigned)time(NULL));
for(int i=0; i<trycount; i++)
{
val = rand();
if(val < RAND_MAX * 0.03)
count ++;
}
if(count <= trycount * 0.03)
{
执行程序
}
qhfu 2005-09-13
  • 打赏
  • 举报
回复
随机产生一个0~1 之间的实数。 如果小于 0.03 ,则执行交叉操作! 我以前好像是这样做的,有点忘了,呵呵!
kevintamin 2005-09-13
  • 打赏
  • 举报
回复
呵呵 是啊 原来是 0.03 我在这里写的0.05 就没想那么多了:)
kevintamin 2005-09-13
  • 打赏
  • 举报
回复
是遗传算法里面的 一段代码,做变异处理,但是不能变的太多:)
所以有这样的要求 呵呵.

原文如下:由于GA是一个概率过程,所以每次迭代的情况是不一样的;系统参数不同,迭代情况
也不同。在实验中参数一般选取如下:个体数n=50-200,变异概率Pm=0.03, 交叉概率Pc=
0.6。变异概率太大,会导致不稳定。
jsjjms 2005-09-13
  • 打赏
  • 举报
回复
这样写可以的,不过楼主何必要产生100个随机数呢?
产生20个不就可以了呀???
xiaocai0001 2005-09-13
  • 打赏
  • 举报
回复
要求以概率0.05??

那基本上就是不执行了

再说了概率这东西是具有统计特性的,在单次试验或少量试验中,是很具有偶然性的,

所以感觉怎么会出现以概率执行某程序呢?
kevintamin 2005-09-13
  • 打赏
  • 举报
回复
呵呵 测试通过! 感谢各位的不吝赐教!!!!

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧