2013-11-22 155 views
0

我有一些僞代碼,我把它們編成了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代碼是正確的,基於僞代碼,任何幫助將不勝感激,謝謝:)

+1

總是定義「不工作」。 – keyser

+0

您是否知道首先for循環僅運行一次? –

+0

初學者,因爲你的o = 1,你沒有填充整個數組,但你只放一個元素 – user902383

回答

1

看看你的for循環。它有效地說i < 1。使用數組的長度:

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

我試過這個,但是當我打印出A或X時,輸出:[I @ 45bab50a @KaiSternad – user3021571

+0

您是否嘗試迭代數組?你不能直接打印出來。 –

+0

我試過了,它現在打印出數組中的數字,但我只是意識到我想打印的是數組中數字的平均值。 @Kai – user3021571

0

我相信這是你的問題:

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

你只填入i=0和停止時i=1

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 ; 
    } 
} 
0

在你Foro = 1所以只能在時間循環將工作

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

因此改變oX.length;

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