C语言一个概率的问题.解释一下语言句就好了.口袋中有5只红球,4只白球.随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?在计算的时候往往十分复杂.但如果通过计算机模拟这个过

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 20:48:22
C语言一个概率的问题.解释一下语言句就好了.口袋中有5只红球,4只白球.随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?在计算的时候往往十分复杂.但如果通过计算机模拟这个过

C语言一个概率的问题.解释一下语言句就好了.口袋中有5只红球,4只白球.随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?在计算的时候往往十分复杂.但如果通过计算机模拟这个过
C语言一个概率的问题.解释一下语言句就好了.
口袋中有5只红球,4只白球.随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?在计算的时候往往十分复杂.但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的.同样,这个原理也适用于像天气预报这样复杂的系统过程.
以下的程序就是用于解决取球概率问题的.仔细阅读代码,补全空白的部分.
\x05srand( (unsigned)time( NULL ) );
\x05int n = 0;
\x05for(int i=0; i

C语言一个概率的问题.解释一下语言句就好了.口袋中有5只红球,4只白球.随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?在计算的时候往往十分复杂.但如果通过计算机模拟这个过
首先理解k的意思,k表示模拟取走一个球的编号.
当k号球被取走后,k位置上其实就没有球了,这里是将最后一个球放到了k的位置上,然后将k的取值范围缩小一个(int k = rand() % (9-j);).
如假设j = 0, k = 2 ,
则模拟取出的就是1,那么x中的球就应该少去一个1
如: 1 1 1 1 2 2 2
因为x为一个数组,删减很麻烦,
所以就直接将原来数组中最后一个 1 1 1 1 1 2 2 2 ,也就是2
赋值到k处 就形成了新的x:1 1 2 1 1 2 2 2,而前面的
int k = rand() % (9-j);
则限制了在x中的取值的范围.
初始的时候j = 0;涨一个 就成了 1
那么k = rand() % (9-j);
k的取值范围就是 0 - 7
也就是说不会取到x的最后一个了.
主要是考虑到取走一个球之后,里面就减少了一个.