我正在处理一个我有点困惑的问题。问题是假设您是二战期间英国空军的将军。你还有 100 架飞机可以保卫英国。每执行一次任务,每架飞机都有 50% 的几率被德国高射炮击落,因此每次执行任务都会损失大约一半的飞机。你必须编写一个程序来估算每次任务后有多少飞机可以存活,以及在所有飞机被击落之前你可以执行多少次任务。
我的程序不起作用,我不知道它有什么问题,所以我猜英格兰有麻烦了。我试图用两个while循环来解决这个问题。外部 while 循环表示,只要您还有飞机,就可以将它们发送到另一个任务中。内部 while 循环模拟实际任务。在 while 循环存在之后,平面的总数现在是幸存的平面。
import acm.program.*;
import acm.util.*;
public class MissionPlanes extends ConsoleProgram{
public void run(){
int planes = 100; /* total number of planes */
int suvPlanes = 0; /* surviving planes */
int mission = 0; /* total number of missions */
int planeCounter = 0; /* keeps track of the planes flying over the anti plane gun */
while (planes > 0){
while(planeCounter < planes){
planeCounter++;
if(rgen.nextBoolean()){ /* I've tried rgen.nextBoolean() with paramaters and with no paramaters */
suvPlanes += 1;
}
}
planes = suvPlanes;
mission++;
println("The total number of surviving planes you have is " + planes + "after" + missoin + "missions");
}
}
private RandomGenerator rgen = RandomGenerator.getInstance();
}