一个女人生小孩的概率 问题

/*一个女人生小孩的概率 问题
 总共生四个小孩
 a 都是 男的 或都是女的 
 b 两个男的 和两个女的
 c 三个男的和一个女的 或三个女的和一个男的
 求a b c 的概率
 只用到 if 和 for语句 
 和Math.random这个函数!~ 
*/


import  java.text.DecimalFormat;

public   class  Probability  {

    
public int totalCount = 100000;// 总循环次数

    DecimalFormat myFormat 
= new DecimalFormat("#0.0000");

    
// 都是 男的 或都是女的
    public void viewA() {
        
int okCount = 0;
        
for (int i = 0; i < totalCount; i++{
            
int temp = 0;
            
for (int j = 0; j < 4; j++)
                temp 
+= (int) (Math.random() * 10 + 1);
            
if (temp == 40 || temp == 4)
                okCount
++;
        }

        
double d = (1.0 * okCount / totalCount + 0.0000005* 1000;
        
//System.out.println(d + "   " + okCount);
        System.out.println(myFormat.format(d) + "/" + (totalCount * 1000));
    }


    
// 两个男的 和两个女的
    public void viewB() {
        
int okCount = 0;
        
for (int i = 0; i < totalCount; i++{
            
int man = 0, woman = 0;
            
int[] temp = { (int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1) }
;
            
for (int j = 0; j < 4; j++{
                
if (temp[j] == 10)
                    man
++;
                
else if (temp[j] == 1)
                    woman
++;
                
else
                    
continue;
            }

            
if (man == 2 && woman == 2)
                okCount
++;
        }

        
double d = (1.0 * okCount / totalCount + 0.0000005* 1000;
        System.out.println(myFormat.format(d)  
+ "/" + (totalCount * 1000));
    }


    
// 三个男的和一个女的 或三个女的和一个男的
    public void viewC() {
        
int okCount = 0;
        
for (int i = 0; i < totalCount; i++{
            
int man = 0, woman = 0;
            
int[] temp = { (int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1),
                    (
int) (Math.random() * 10 + 1) }
;
            
for (int j = 0; j < 4; j++{
                
if (temp[j] == 10)
                    man
++;
                
else if (temp[j] == 1)
                    woman
++;
                
else
                    
continue;
            }

            
if ((man == 3 && woman == 1|| (man == 1 && woman == 3))
                okCount
++;
        }

        
double d = (1.0 * okCount / totalCount + 0.0000005* 1000;
        System.out.println(myFormat.format(d)  
+ "/" + (totalCount * 1000));
    }


    
public static void main(String[] args) {
        Probability p 
= new Probability();
        p.viewA();
         p.viewB();
         p.viewC();
    }

}

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值