您的位置:首页 > 其它

rand函数 软件大赛题目 夺冠概率

2013-04-24 11:43 525 查看
MSDN中关于rand的描述"The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). Use the srand function to seed the pseudorandom-number generator before calling rand."
rand()产生的伪随机数的范围是0到32767,一般想要产生比如[5,125]的随机数,可以这么写:
int x = rand()%120 + 5;
其中120是区间长度。
rand()产生的随机数是“伪随机数”,就是有可能在你的机器上运行,每次运行程序产生的随机数序列都是一样的,因此需要使用srand()解决这个问题:
#include <time.h>
srand(time(NULL));   //这句放在任何的rand()之前,且只需使用一次
<p><strong>夺冠概率</strong></p><p><strong>足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。</strong></p><p><span style="font-weight: bold;">假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:</span><strong>
</strong><span style="font-weight: bold;">甲  乙  丙  丁   </span><strong>
甲   -  0.1 0.3 0.5
乙 0.9  -   0.7 0.4 
丙 0.7  0.3 -   0.2
丁 0.5  0.6 0.8 -
</strong><span style="font-weight: bold;">数据含义:甲对乙的取胜概率为0.1,丙对乙的胜率为0.3,...</span><strong>
</strong><span style="font-weight: bold;">现在要举行一次锦标赛。双方抽签,分两个组比,获胜的两个队再争夺冠军。(参见【1.jpg】)</span><strong>
</strong><span style="font-weight: bold;">请你进行10万次模拟,计算出甲队夺冠的概率。</span></p><p>#include<iostream></p><p>#include<time.h></p><p>using namespace std;</p><p> </p><p>int main()</p><p>{</p><p>       srand(time(NULL));</p><p>       intb[4][4]={{0,1,3,5},{9,0,7,4},{7,3,0,2},{5,6,8,0}};</p><p> </p><p>       intcount=0;</p><p>       intpk=0;</p><p>       boolflag=false;</p><p>       for(inti=1;i<=100000;i++)</p><p>       {</p><p>              intt=rand()%3+1;//从乙丙丁中任取一个</p><p>              if((rand()%10)<b[0][t])</p><p>              {</p><p>                     switch(t)</p><p>                     {</p><p>                     case1:</p><p>                            {</p><p>                                   if((rand()%10)<b[2][3])pk=2;</p><p>                                   elsepk=3;</p><p>                                   break;</p><p>                            }</p><p>                     case2:</p><p>                            {</p><p>                                   if((rand()%10)<b[1][3])pk=1;</p><p>                                   elsepk=3;</p><p>                                   break;</p><p>                            }</p><p>                     case3:</p><p>                            {</p><p>                                   if((rand()%10)<b[1][2])pk=1;</p><p>                                   elsepk=2;</p><p>                                   break;</p><p>                            }</p><p>                     }</p><p>                     if((rand()%10)<b[0][pk])</p><p>                            count++;</p><p>                     }</p><p>              }</p><p> </p><p>       cout<<count<<endl;</p><p>       return0;</p><p>}</p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息