我必须使用以下参数创建PRNG“程序应使用以下算法生成1000个数字的序列:seed =(1664525 * seed + 1013904223)%4294967296对于每个新种子,打印出种子的十进制值/ 4294967296。请记住,在进行此除法之前,您必须将long转换为双精度才能获得十进制数!“如果你愿意,你可以笑,但这是我到目前为止所抛出的,
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 ) ;
} } } }
这是我在java程序中的第一年。我不是要求任何人做我的工作,这不会帮助我,但是推动会。感谢名单
答案 0 :(得分:1)
我能看到的第一个问题是while
和for
之后的分号。那几乎肯定不是你想要的。
答案 1 :(得分:0)
您的程序有编译时错误,首先要纠正它们。
我认为你做while语句的目的是接受号码between -2147483648 and 2147483647.
如果是这样,那么您的条件应为seed <= -2147483648 && 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();
}
}
}