使用随机生成的数字创建星号直方图
Creating a histogram of asterisks with randomly generated numbers
所以基本上我必须使用随机生成器生成 1 到 10 之间的 100 个随机数,然后将它们相加求和,然后有一个直方图显示出现的每个数字的星号...我想我做对了第一部分,但我尝试在第二部分使用下面的指南,但我真的不太确定如何将它应用到我的数字中......任何帮助都会很棒
大家好,我环顾四周,在这里发现了类似的东西:Having issues with generating 1 to 300 numbers between 1 to 100 and placing each number in a String
/**
* Write a description of class RandomCalculator here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.util.Random;
public class RandomCalculator
{
public static void main(String[] args)
{
Random r = new Random();
System.out.println(" The one hundred random values are: ");
int[] values = new int[100];
for(int i =0; i<10; i++)
{
int randomint = r.nextInt(100);
values[i] = randomint;
System.out.print(" , " + randomint);
}
int sum = 0;
for(int i : values) {
sum+= i;
}
System.out.println("Sum = " + sum);
}
int input = Integer.parseInt(in.nextLine());
int aNumber;
String One = "", Two = "", Three= "", Four = "", Five = "", Six = "", Seven = "", Eight = "", Nine = "", Ten = "", ;
if (randomint<1 || randomint >100)
else
{
for(int i = 0; i < input; i++)
{
aNumber = (int) (Math.random() * 100 + 1);
if(aNumber <= 1) One += "*";
else if(aNumber <= 2) Two += "*";
else if(aNumber <= 3) Three += "*";
else if(aNumber <= 4) Four += "*";
else if(aNumber <= 5) Five += "*";
else if(aNumber <= 6) Six += "*";
else if(aNumber <= 7) Seven += "*";
else if(aNumber <= 8) Eight += "*";
else if(aNumber <= 9)
else if(aNumber <= 10) Nine += "*";
else Ten += "*";
}
}
}
}
}
您想生成 100 到 10 之间的 100 个随机数,但是您的代码生成了 0(含)到 99(含)之间的 10 个随机数。
您必须将第一个 for 循环更改为循环 100 次而不是 10 次并更改行
int randomint = r.nextInt(100);
至
int randomint = 1 + r.nextInt(10);
这将保证区间 [1,10](包括两者)上的数字。
对于直方图部分,您要创建另一个数组来存储直方图 bin(每个直方图的频率 bar/column)。您可以在第一个循环中更新直方图 bins 并更新总和,不需要第二个循环。
然后使用第二个循环(双 for 循环)打印直方图 bin(外循环用于线,内循环用于星号)。
所以基本上我必须使用随机生成器生成 1 到 10 之间的 100 个随机数,然后将它们相加求和,然后有一个直方图显示出现的每个数字的星号...我想我做对了第一部分,但我尝试在第二部分使用下面的指南,但我真的不太确定如何将它应用到我的数字中......任何帮助都会很棒
大家好,我环顾四周,在这里发现了类似的东西:Having issues with generating 1 to 300 numbers between 1 to 100 and placing each number in a String
/**
* Write a description of class RandomCalculator here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.util.Random;
public class RandomCalculator
{
public static void main(String[] args)
{
Random r = new Random();
System.out.println(" The one hundred random values are: ");
int[] values = new int[100];
for(int i =0; i<10; i++)
{
int randomint = r.nextInt(100);
values[i] = randomint;
System.out.print(" , " + randomint);
}
int sum = 0;
for(int i : values) {
sum+= i;
}
System.out.println("Sum = " + sum);
}
int input = Integer.parseInt(in.nextLine());
int aNumber;
String One = "", Two = "", Three= "", Four = "", Five = "", Six = "", Seven = "", Eight = "", Nine = "", Ten = "", ;
if (randomint<1 || randomint >100)
else
{
for(int i = 0; i < input; i++)
{
aNumber = (int) (Math.random() * 100 + 1);
if(aNumber <= 1) One += "*";
else if(aNumber <= 2) Two += "*";
else if(aNumber <= 3) Three += "*";
else if(aNumber <= 4) Four += "*";
else if(aNumber <= 5) Five += "*";
else if(aNumber <= 6) Six += "*";
else if(aNumber <= 7) Seven += "*";
else if(aNumber <= 8) Eight += "*";
else if(aNumber <= 9)
else if(aNumber <= 10) Nine += "*";
else Ten += "*";
}
}
}
}
}
您想生成 100 到 10 之间的 100 个随机数,但是您的代码生成了 0(含)到 99(含)之间的 10 个随机数。
您必须将第一个 for 循环更改为循环 100 次而不是 10 次并更改行
int randomint = r.nextInt(100);
至
int randomint = 1 + r.nextInt(10);
这将保证区间 [1,10](包括两者)上的数字。
对于直方图部分,您要创建另一个数组来存储直方图 bin(每个直方图的频率 bar/column)。您可以在第一个循环中更新直方图 bins 并更新总和,不需要第二个循环。
然后使用第二个循环(双 for 循环)打印直方图 bin(外循环用于线,内循环用于星号)。