zoukankan      html  css  js  c++  java
  • 据说是百度面试题(1)

    概率题:一个篮子里装着20个红球和20个蓝球,每次从中取出2球,如果取出的2球颜色不一样,那么放回红球,取出蓝球;如果取出的2球的颜色是一样的,则都不放回,将2球都取出;不断重复以上步骤。问题:求最后一次取球恰好只取到一个红球的概率。

    因为红球是偶数,而取出1红1蓝的情况下也会把红球放回,所以红球是不会被单个取出的,所以最后一次取球是不会只取到一个红球的!也就是概率是0,但是不知道这种东西是否也要用程序写出来,如果用数学式是怎么计算的?

    根本不知道该如何写

    下面写了个PHP的程序亲测,

    	$x=20; //红球
    	$y=20; //篮球
    	
    	$ball = array(); //初始化 将球放入数组中
    	for ($i=1;$i<=$x+$y;$i++) {
    		$ball[$i] = $i;
    	}	
    
    	// 对球的操作
    	function getBall($a,$b) {
    		global $ball;
    		global $x;
    		global $y;
    		if ($a <= 20 && $b <=20) { //2红球
    			$x = $x-2;
    			unset($ball[$a]); //注销掉数组中的此元素
    			unset($ball[$b]);
    		} else if ($a<=20 && $b > 20) { //1红1蓝
    			$y = $y-1;
    			unset($ball[$b]);
    		} else if ($a > 20 && $b > 20) { // 2蓝
    			$y = $y-2;
    			unset($ball[$a]);
    			unset($ball[$b]);
    		}
    	}
    
    	// 递归取球
    	function oprateBall() {
    		global $ball;
    		global $x;
    		global $y;
    		$a = array_rand($ball,2); // 随机获取目前数组中的2个球 
    		
    		getBall($a[0],$a[1]); //调用取球函数
    		
    		if (count($ball) == 2 ) {
    			return oprateBall();
    		} else {
    			if ($x ==1) { // 红球的概率为0 不可能只最后只剩下一个红球
    				return '红球';
    			} else if ($y == 2) {
    				return '篮球';	
    			} else { // 亲测此程序运行 出现 这种情况的概率是最高的
    				return '2个红球!';
    			}
    		}
    	}
    
    	$result = oprateBall();
    	echo $result;
    
  • 相关阅读:
    sql 中 in 与 exist 的区别
    with as (cte common table expression) 公共表表达式
    配置连接数据库的方式
    Dispose 与 close 方法 的区别
    抽象类
    default
    什么叫无符号整型
    hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]
    poj 2480 Longge's problem [ 欧拉函数 ]
    lightoj 1293
  • 原文地址:https://www.cnblogs.com/darktime/p/3272286.html
Copyright © 2011-2022 走看看