请问下面一题怎么编程(C++)

来源:百度知道 编辑:UC知道 时间:2024/05/14 11:38:33
已知袋中有若干个白球和黑球,每次从中取出两个球,如取出的各个球为同色,则放回一个白球(袋外有足够的白球);如取出的两个球为异色,则放回一黑球。试设计取球过程的模拟程序,判断最后剩下的一个球的颜色。

分析一下每次取球,有25%的几率取出两个白球,有25%的几率取出两个黑球,有50%的几率取出一个黑球一个白球。
下面的程序先初始化白球、黑球的数量,然后在随机设置取球的动作,循环到最后,只剩下一个球。

#define TWO_WHITE 0 //取出两个白球
#define TWO_BLACK 3 //取出两个黑球
#include "stdlib.h"
#include "time.h"
int main(void)
{
time_t t;
int cur_black;
int cur_white;
int op; //op随机取球动作的含义 0:两个白球 1:一个白球一个黑球 2:一个黑球一个白球(同1) 3:两个黑球

void print_status(int,int,int);

srand((unsigned) time(&t));

cur_black = 10+rand()%10; //初始化黑球的数量(可以修改为其他值)
cur_white = 10+rand()%10; //初始化白球的数量(可以修改为其他值)

printf("before operate: count_black=%d, count_white=%d\n",cur_black,cur_white);

while(cur_black+cur_white>1)
{
op=rand()%4; //设置随机取球的动作
switch( op )
{
case TWO_WHITE :
if( cur_white>=2 )
{
cur_white -= 2 ;
cur_white++;
print_status(op,cur_black,cur_white);
}<