我有一些伪代码,我在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代码是正确的,基于伪代码,任何帮助都将非常感谢,谢谢:)
答案 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;
}