使用随机生成的数字创建星号的直方图

时间:2015-04-12 23:53:52

标签: random histogram

所以基本上我必须使用随机生成器生成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 += "*";
            }
        }

    }
}
    }

1 个答案:

答案 0 :(得分:0)

您希望在1到10之间生成100个随机数,但您的代码会在0(包括)和99(包括)之间生成10个随机数。

您必须将第一个for循环更改为循环100次而不是10次并更改行

int randomint = r.nextInt(100);

int randomint = 1 + r.nextInt(10);

这将保证间隔[1,10](包括两者)的数字。

对于直方图部分,您要创建另一个将存储直方图区间的数组(每个直方图条/列的频率)。您可以更新直方图箱并在第一个循环中更新总和,不需要第二个循环。

然后使用第二个循环(双循环)打印出直方图箱(行的外循环,星号的内循环)。

示例:https://ideone.com/xjBK6i