心理课玩过这样一个游戏
总结的时候有位同学装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 唉