所以我有一个非常基本的编码问题,我刚刚开始学习今年,我有一个代码的任务,应该是
翻转一个公平的硬币n次并计算它有多少头。该程序将进行m个实验然后 将结果打印为(垂直)直方图。该程序将首先要求用户输入数量 进行(m)的实验和每次实验中的硬币翻转次数(n)。 n最多可以是79 输出将是由空格和星号(*)组成的直方图,其中n + 1列(用于头数) 可以从0到n)
我已经完成了直方图的代码,但我遇到的问题是如何存储磁头数量,因为它是自己的变量。例如,如果它将硬币翻转80次并且其中40个是头部,我希望它创建一个40翻转的int,然后添加一个。我只是不知道如何初始化80个变量而不写出int = 0; int two = 0,int three = 0;直到时间结束,然后编写80 if语句,直到找到正确的整数来添加一个。有没有一种简单的方法可以做到这一点,还是应该采取不同的方法?这是代码,请温柔,字面上只有一个月左右进入一个非常基本的java类
for(m=m; m>0; m--) { //runs m number of experiments of n coinflips, keeping track of total heads
n = o; // when N gets set to 0 through the while loop, o resets it back to it's original so it can loop again
while(n>0) {
n--;
if(random.nextBoolean()) {
heads++;
total++;
/** here is where I want the number of heads saved to a
variable, so that way later I can run a loop to put as many *'s as I need in the histogram later */
答案 0 :(得分:0)
只需使用数组进行80(或n)次实验:
我不明白,这只会计算出有多少头/尾?除非我误解,否则这不能保存它们(即它将5个头翻转6次,4个头3次,3个头翻两次,等等)
如果您要存储头m
次(m
<80),您可以:
1)在生成结果时打印直方图(无需数组) OR
2)将80个结果存储在一个数组中
1的示例(无数组):
for(int x=0; x<experiments; x++){
int heads = 0;
for(int y=0; y<flips; y++){
if(rnd.nextInt(2) == 0) //assume 0 is head
heads ++;
}
//print histogram
for(int y=0; y<heads; y++)
System.out.print("*");
System.out.println();
}
2的示例(带数组):
int[] expr = new int[80]; //store results for 80 experiments
for(int x=0; x<expriments; x++)
for(int y=0; y<flips; y++)
if(rnd.nextInt(2) == 0)
expr[x] ++;
答案 1 :(得分:0)
使用数组:
int n = 80;
// space for n integers, with indexes 0..n
int[] histogram = new int[n + 1];
for (int i = 0; i < experiments; i++) {
// flip coin n times, counting heads
int heads = ...;
histogram[heads] = histogram[heads] + 1;
}
for (int i = 0; i < histogram.length; i++) {
printStars(histogram[i]);
}