Java PRNG从头开始
我必须用这些参数创建一个PRNG“程序应使用以下算法生成1000个数字的序列:seed=(1664525*seed+1013904223)%4294967296对于每个新种子,打印出种子的十进制值/4294967296。记住,在进行此除法之前,必须将长数转换为双倍数才能得到十进制数!”如果你愿意,你可以笑,但这是我到目前为止总结的内容Java PRNG从头开始,java,algorithm,Java,Algorithm,我必须用这些参数创建一个PRNG“程序应使用以下算法生成1000个数字的序列:seed=(1664525*seed+1013904223)%4294967296对于每个新种子,打印出种子的十进制值/4294967296。记住,在进行此除法之前,必须将长数转换为双倍数才能得到十进制数!”如果你愿意,你可以笑,但这是我到目前为止总结的内容 import java.util.Scanner; public class Random { public static
import java.util.Scanner;
public class Random
{
public static void main( String args[] )
{
Scanner input = new Scanner( System.in );
long seed ;
double seeded ;
do
{
System.out.printf("Enter a Number between -2147483648 and 2147483647") ; long num = input.nextLong() ;
seed = num ;
while ( seed >= -2147483648 && seed <= 2147483647) ;
{
for ( long seed = 0 ; seed < 1000 ; seed ++ ) ;
{
seed = (1664525 * seed + 1013904223) % 4294967296) ;
seeded = seed ;
}
System.out.printf(" %f", seeded ) ;
} } } }
import java.util.Scanner;
公共类随机
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
长种子;
双种子;
做
{
System.out.printf(“输入一个介于-2147483648和2147483647之间的数字”);long num=input.nextLong();
种子=num;
while(seed>=-2147483648&&seed我能看到的第一个问题是while
和for
后面的分号。这些几乎肯定不是您想要的。您的程序有编译时错误,首先要纠正它们
重复局部变量种子
int类型的文本4294967296超出范围。因此更改4294967296.0(双精度)
删除while和for结尾处的分号(:)
do while语句的语法不正确
我认为您的do while语句的目的是接受介于-2147483648和2147483647之间的数字。
如果是这样,则do while条件应为seed=2147483647
我修复了你的程序。现在它可以运行了。检查它是否符合你的要求
import java.util.Scanner;
public class Test1 {
public static void main( String args[] )
{
Scanner input = new Scanner( System.in );
long seed ;
double seeded= 0.0 ;
do
{
System.out.printf("Enter a Number between -2147483648 and 2147483647") ;
long num = input.nextLong() ;
seed = num ;
}while ( seed <= -2147483648 && seed >= 2147483647);
for (seed = 0; seed < 1000; seed ++)
{
seeded = (long) ((1664525 * seed + 1013904223) % 4294967296.0) ;
System.out.printf(seed + ": %f", seeded ) ;
System.out.println();
}
}
}
import java.util.Scanner;
公共类Test1{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
长种子;
双种子=0.0;
做
{
System.out.printf(“输入一个介于-2147483648和2147483647之间的数字”);
long num=input.nextLong();
种子=num;
}而(种子=2147483647);
用于(种子=0;种子<1000;种子++)
{
种子=(长)((1664525*种子+1013904223)%4294967296.0);
System.out.printf(种子+“:%f”,种子);
System.out.println();
}
}
}
您应该做的第一件事是清理您发布的代码:将所有制表符转换为一致数量的空格并修复缩进。其次,删除while
和for
语句末尾的分号。然后,在调试器中运行此操作并以这种方式解决问题。