蓝桥杯 C/C++参考题目 取球概率(数学题,概率)

来源:互联网 发布:梁山传奇翅膀进阶数据 编辑:程序博客网 时间:2024/06/08 11:13

蓝桥杯 C/C++参考题目 取球概率(数学题,概率)

口袋中有5只红球,4只白球。随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?类似这样的数学问题,在计算的时候往往十分复杂。但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的。同样,这个原理也适用于像天气预报这样复杂的系统过程。

以下的程序就是用于解决取球概率问题的。仔细阅读代码,补全空白的部分。

复制代码
 1     srand( (unsigned)time( NULL ) ); 2  3     int n = 0; 4     for(int i=0; i<100000; i++) 5     { 6         char x[] = {1, 1, 1, 1, 1, 2, 2, 2, 2}; 7         int a = 0;  // 取到的红球的数目 8         int b = 0;  // 取到的白球的数目 9 10         for(int j=0; j<3; j++)11         {12             int k = rand() % (9-j);13             if(x[k]==1) 14                 a++;15             else16                 b++;17 18             _______________________;19         }20 21         if(a==1 && b==2)  n++;22     }23 24     printf("概率=%f\n", n/100000.0*100);
复制代码

 


 

  水题,数学题,概率

  填空处你需要做的是,把当前的最后一个球填到现在取出球的位置,即:x[k]=x[9-j-1]; 

   rand()函数返回一个从srand赋的整数到21亿的整数。具体见:rand()-百度百科、rand函数-百度百科

  代码:

复制代码
 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4  5 int main() 6 { 7     srand( (unsigned)time( NULL ) ); 8  9     int n = 0;10     for(int i=0; i<100000; i++)11     {12         char x[] = {1, 1, 1, 1, 1, 2, 2, 2, 2};13         int a = 0;  // 取到的红球的数目14         int b = 0;  // 取到的白球的数目15 16         for(int j=0; j<3; j++)17         {18             int k = rand() % (9-j);19             if(x[k]==1) 20                 a++;21             else22                 b++;    23             x[k]=x[9-j-1];24         }25 26         if(a==1 && b==2)  n++;27     }28 29     printf("概率=%f\n", n/100000.0*100);30     return 0;31 }32 /* rand()函数不知道怎么用的可以用以下代码测试一下33 int main()34 {35     srand( (unsigned)time( NULL ) );36     while(getchar()){37         int k = rand();38         printf("%d\n",k);39     }40 }41 */
0 0
原创粉丝点击