要求用户输入3个整数以使用以下公式创建随机数: z =(a * z + b)%m;
1.Step z =(a * 0 + b)%m;让我们说结果是7。 2.步骤: z =(a * 7 + b)%m 等等。
我希望程序能给我20个随机数。 在循环的第一步中,随机数z为0,然后在每个附加步骤中,从最后一步的结果构建随机数。 我希望你们能理解我想说的话。
我的代码到目前为止:
import java.io.*;
public class Zufallszahlentest {
public static void main (String [] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
int a = Integer.parseInt(in.readLine());
int b = Integer.parseInt(in.readLine());
int m = Integer.parseInt(in.readLine());
Methode(a,b,m);
System.out.println(Methode(a,b,m));
}
static int Methode(int a, int b, int m){
int z = 0;
for (int i = 0; i <= 20; i++) {
z = (a*z+b)%m;
}
return z;
}
}
我已经坐了几个小时,我已经建立了没有结果的巨大循环,我觉得每次尝试都会变得笨拙和笨拙。
帮助将受到高度赞赏。
答案 0 :(得分:0)
你的循环位置错误 - 它应该包含println,如果你想让println发生20次..这应该有效:
import java.io.*;
public class Zufallszahlentest {
public static void main (String [] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
int a = Integer.parseInt(in.readLine());
int b = Integer.parseInt(in.readLine());
int m = Integer.parseInt(in.readLine());
int z = Methode(a, b, m, 0);
for (int i = 0; i < 20; i++) {
System.out.println(z);
z = Methode(a, b, m, z);
}
}
static int Methode(int a, int b, int m, int z) {
return (a * z + b) % m;
}
}
答案 1 :(得分:-1)
如果要保留以前的值,请将其设置为静态。你有 在类声明的开头声明'z'是一个静态int 因此'z'将成为一次类变量 初始化并保留先前的值。
即
import java.io.*;
public class Zufallszahlentest {
static int z=0; //class variable
public static void main (String [] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
int a = Integer.parseInt(in.readLine());
int b = Integer.parseInt(in.readLine());
int m = Integer.parseInt(in.readLine());
Methode(a,b,m);
System.out.println(Methode(a,b,m));
}
static int Methode(int a, int b, int m){
for (int i = 0; i <= 20; i++) {
z = (a*z+b)%m;
}
return z;
}
}