Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PRNG从头开始_Java_Algorithm - Fatal编程技术网

Java PRNG从头开始

Java PRNG从头开始,java,algorithm,Java,Algorithm,我必须用这些参数创建一个PRNG“程序应使用以下算法生成1000个数字的序列:seed=(1664525*seed+1013904223)%4294967296对于每个新种子,打印出种子的十进制值/4294967296。记住,在进行此除法之前,必须将长数转换为双倍数才能得到十进制数!”如果你愿意,你可以笑,但这是我到目前为止总结的内容 import java.util.Scanner; public class Random { public static

我必须用这些参数创建一个PRNG“程序应使用以下算法生成1000个数字的序列:seed=(1664525*seed+1013904223)%4294967296对于每个新种子,打印出种子的十进制值/4294967296。记住,在进行此除法之前,必须将长数转换为双倍数才能得到十进制数!”如果你愿意,你可以笑,但这是我到目前为止总结的内容

  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
    语句末尾的分号。然后,在调试器中运行此操作并以这种方式解决问题。