我一直在运行一个程序来模拟跨越7步桥所需的步骤数。生成随机数以确定该人是向前还是向后迈出一步。该模拟运行1000次。在此之后,打印出来的平均步数以及最大步数。
这反过来运行1000次。它汇编得很好。我的问题是,当我去运行它时,(在BlueJ上)条形图显示它正在运行,但输出窗口无法显示。怎么了? (很可能是一些愚蠢的事情,我不知道。)
import java.util.Random;
public class Prog214a
{
public static void main (String[] args)
{
Random rn = new Random();
for (int m = 1; m <= 20; m++)
{
int max = 0;
for (int c = 1; c <= 1000; c++)
{
int s = 0;
int sn = 0;
int sum = 0;
while (s < 7)
{
int ans = rn.nextInt(1) + 0;
if (ans == 1) {
s = s + 1
}
else {
s = s - 1;
}
sn++;
}
sum = sum + sn;
if (sn > max) {
max = sn;
}
if (c == 1000) {
double avg = sum / c;
System.out.print(avg);
System.out.print(" " + max);
}
}
}
}
}
答案 0 :(得分:1)
至少有一个问题。这里:
int ans = rn.nextInt(1) + 0;
if (ans == 1){
s = s + 1;
}
else {
s = s -1;
}
rn.nextInt(1)
只能返回0,因此ans
将为0.您无法保证s
不会消极,所以确实如此 - 并且它仍然小于7 ,意味着while循环(条件s < 7
)继续 long 时间(具体来说,直到s
再次回到正数)。