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

时间:2023-03-10 08:23:54
蓝桥杯 C/C++参考题目 取球概率(数学题,概率)

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

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

     srand( (unsigned)time( NULL ) );

     int n = ;
for(int i=; i<; i++)
{
char x[] = {, , , , , , , , };
int a = ; // 取到的红球的数目
int b = ; // 取到的白球的数目 for(int j=; j<; j++)
{
int k = rand() % (-j);
if(x[k]==)
a++;
else
b++; _______________________;
} if(a== && b==) n++;
} printf("概率=%f\n", n/100000.0*);

  水题,数学题,概率

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

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

  代码:

 #include <stdio.h>
#include <stdlib.h>
#include <time.h> int main()
{
srand( (unsigned)time( NULL ) ); int n = ;
for(int i=; i<; i++)
{
char x[] = {, , , , , , , , };
int a = ; // 取到的红球的数目
int b = ; // 取到的白球的数目 for(int j=; j<; j++)
{
int k = rand() % (-j);
if(x[k]==)
a++;
else
b++;
x[k]=x[-j-];
} if(a== && b==) n++;
} printf("概率=%f\n", n/100000.0*);
return ;
}
/* rand()函数不知道怎么用的可以用以下代码测试一下
int main()
{
srand( (unsigned)time( NULL ) );
while(getchar()){
int k = rand();
printf("%d\n",k);
}
}
*/

Freecode : www.cnblogs.com/yym2013