在数组内生成随机数

时间:2013-11-22 12:03:58

标签: 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)    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);
        }

    }   

我遇到的问题是我不确定如何在这个数组中生成随机数,然后通过algortihm运行这个数组。我确信我的java代码是正确的,基于伪代码,任何帮助都将非常感谢,谢谢:)

4 个答案:

答案 0 :(得分:1)

看看你的for循环。它有效地说i < 1。使用数组的长度:

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

答案 1 :(得分:0)

我相信这是你的问题:

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

您只填充i=0并在i=1

时停止

答案 2 :(得分:0)

使用以下代码用随机数填充整个数组。在设置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 ;
    }
}

答案 3 :(得分:0)

For循环o = 1中,只有按时循环才能正常工作

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

所以将o改为X.length;

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