• 蓝桥杯(比赛概率题)


    package com.lanqiaobei.dati_01;
    
    import java.util.Random;
    /*
        足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。
    
        假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
    
    	    甲  乙  丙  丁   
    	甲   -  0.1 0.3 0.5
    	乙 0.9  -   0.7 0.4 
    	丙 0.7  0.3 -   0.2
    	丁 0.5  0.6 0.8 -
    
        数据含义:甲对乙的取胜概率为0.1,丙对乙的胜率为0.3,...
    
        现在要举行一次锦标赛。双方抽签,分两个组比,获胜的两个队再争夺冠军。(参见【1.jpg】)
    
        请你进行10万次模拟,计算出甲队夺冠的概率。
    
    
        注意:
    
        请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
        
    */
    public class DuoGuanGaiLv {
    
    	/**
    	 * @param args
    	 * @author wildcat
    	 */
    	//定义一个二维数组,用来存取概率
    	public static double gl[][]={
    		{1,0.1,0.3,0.5},
    		{0.9,1,0.7,0.4},
    		{0.7,0.3,1,0.2},
    		{0.5,0.6,0.8,1}};
    	public static int mamber[]={0,1,2,3};   //用来代表四个队员
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		double asuccess=0;               //进行1000000次的模拟
    		for (int i=0;i<1000000;i++){
    			asuccess+=getResult();
    		}
    		System.out.println(asuccess/1000000);
    		
    
    	}
    	public static double getResult(){
    		int enemy=getEnemy();	//甲抽签获得对手
    		
    		double su1=pkAandB(0,enemy);				//甲于第一个对手比获胜的概率
    		
    		int p1=0,p2=0; //代表另一组的两个队
    		for (int i=1;i<4;i++){
    			if (enemy!=i&p1==0){  //第一个
    				p1=i;
    			}else if (enemy!=i){
    				p2=i;
    			}
    		}
    		double nother=pkAandB(p1,p2);   //另一个组的p1获胜的概率
    		double result=su1*nother*pkAandB(0,p1)+su1*(1-nother)*pkAandB(0,p2);  //返回在一次比赛中甲获胜的概率
    		return result;
    	}
    	//甲获得对手
    	public static int  getEnemy(){
    		Random ra=new Random();
    		return ra.nextInt(3)+1;
    		
    	}
    	//a于b比赛 返回a获胜的概率
    	public static double pkAandB(int a,int b){	
    		return gl[a][b];
    	}
    	
    }
    


  • 相关阅读:
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
    Java并发编程:Timer和TimerTask(转载)
    Java并发编程:并发容器之CopyOnWriteArrayList(转载)
    Java并发编程:阻塞队列
    深入理解Java的接口和抽象类
    Java并发编程:线程池的使用
    Java并发编程:同步容器
    Java并发编程:深入剖析ThreadLocal
    Java并发编程:volatile关键字解析
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3052893.html
Copyright © 2020-2023  润新知