鸡蛋凤凰

心理课玩过这样一个游戏

游戏规则

总结的时候有位同学装B说最后会趋近于都是凤凰,我就很不服

写了如下代码测试

public class Egg {
	private int id = 0;
	/**
	 * 0-鸡蛋 1-小鸡 2-大鸡 3-凤凰
	 */
	
	public void pk(Egg e2) {
		if((int)(Math.random() * 2) == 0){
			this.up();
			e2.down();
		}else{
			this.down();
			e2.up();
		}
	}
	
	public void up(){
		if(id < 3)	id ++;
	}
	
	public void down(){
		if(id > 0)	id --;
	}
	
	public int get(){
		return id;
	}
	
	@Override
	public String toString() {
		if(id == 0)
			return "鸡蛋";
		else if(id == 1)
			return "小鸡";
		else if(id == 2)
			return "大鸡";
		return "凤凰";
	}
}

/**
 * 凤凰的游戏
 * @author	peilun.cc
 * @date	2019年7月7日
 */
public class Main {
    public static void main(String[] args) {
    	Egg[] eggs= new Egg[50000];
    	for (int i = 0; i < eggs.length; i++) {
			eggs[i] = new Egg();
		}
    	for (int i = 0; i < 1000; i++) {
			for (int j = 0; j < 200000; j++) {
				eggs[(int)(Math.random() * eggs.length)].pk(eggs[(int)(Math.random() * eggs.length)]);
			}
			System.out.println("第" + (i + 1) + "轮结束");
		}
    	int[] statistics = new int[4];
    	for (int i = 0; i < eggs.length; i++) {
			statistics[eggs[i].get()] ++;
		}
    	System.out.println("总计 -- " + eggs.length);
    	System.out.println("鸡蛋 -- " + statistics[0]);
    	System.out.println("小鸡 -- " + statistics[1]);
    	System.out.println("大鸡 -- " + statistics[2]);
    	System.out.println("凤凰 -- " + statistics[3]);
    }
}

测试结果

总计 -- 50000
鸡蛋 -- 12580
小鸡 -- 12322
大鸡 -- 12549
凤凰 -- 12549

o(︶︿︶)o 唉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值