Java 在数组中生成随机数

Java 在数组中生成随机数,java,arrays,random,average,prefix,Java,Arrays,Random,Average,Prefix,我有一个伪代码,我把它变成了java代码。这是前缀平均值的计算: Algorithm 4.1. PrefixAverages1(X) Input: X, a 1-D numerical array of size n 1) Let A = an empty 1-D numerical array of size n 2) For i = 0 to n-1 3) Let s = X[0] 4) For j = 1 to i 5) Let s = s + X[j] 6)

我有一个伪代码,我把它变成了java代码。这是前缀平均值的计算:

Algorithm 4.1. PrefixAverages1(X)
Input: X, a 1-D numerical array of size n
1) Let A = an empty 1-D numerical array of size n
2) For i = 0 to n-1
3)    Let s = X[0]
4)    For j = 1 to i
5)       Let s = s + X[j]
6)    End For
7)   Let A[i] = s /(i+1)
8) End For
Output: An n-element array A of numbers such that A[i]
        is the average of elements X[0],X[1], … ,X[i]
下面是我编写的java代码:

public class Prefix1 {

    public static void main(String[] args) {

        algo1();
        }
private static void algo1(){
        int X[] = new int[10];
        int randomNumber;
        int o = 1;
        for (int i=0; i<o; i++) {
            randomNumber = (int) (Math.random() * 100) + 1 ;
            X[i] = randomNumber;
        }
        int n = X.length;
        int A[] = new int [n];


        for (int i=0; i<n-1; ++i)
        {
            int s = X[0];
            for (int j=1; j<i; ++j)
            {
                s = s + X[j];
            }

            A[i] = s / (i+1);
        }

    }   
公共类前缀1{
公共静态void main(字符串[]args){
algo1();
}
私有静态void algo1(){
整数X[]=新整数[10];
整数随机数;
INTO=1;

for(int i=0;i查看for循环。它实际上表示
i<1
。使用数组的长度:

    for (int i=0; i<X.length; i++) {
        randomNumber = (int) (Math.random() * 100) + 1 ;
        X[i] = randomNumber;
    }

for(int i=0;i我认为这是您的问题:

 int o = 1;
 for (int i=0; i<o; i++) {
into=1;

对于(int i=0;i使用以下代码用随机数填充整个数组。设置
o=1
时,只需将数组的第一个元素设置为随机数

private static void algo1(){
    int X[] = new int[10];
    int randomNumber;
    for (int i=0; i<X.length; i++) {
        X[i] = (int) (Math.random() * 100) + 1 ;
    }
}
private static void algo1(){
整数X[]=新整数[10];
整数随机数;

for(int i=0;i在您的
for
循环
o=1
中,因此只有在时间上循环才会工作

        int o = 1;
        for (int i=0; i<o; i++) {
            randomNumber = (int) (Math.random() * 100) + 1 ;
            X[i] = randomNumber;
        }

总是定义“不工作”。你知道first for循环只运行一次吗?对于starter,因为你的o=1,你没有填充整个数组,但你只放了一个元素。它不会生成随机数,只是随机字符。我尝试了这个方法,但当我打印出A或X时,我得到了输出:[I@45bab50a@kaisternadh你试过迭代数组吗?你不能直接打印出来。我试过了,现在它正在打印数组中的数字,但我刚刚意识到我要打印的是数组中数字的平均值。@kaisternadh然后迭代数组,将所有数字相加,最后除以数组的长度,有些类似这样的事情:double avg=0;for(inti:X){avg+=i};avg=avg/X.length
        int o =  X.length;
        for (int i=0; i<o; i++) {
            randomNumber = (int) (Math.random() * 100) + 1 ;
            X[i] = randomNumber;
        }