3

これらのパラメータを使用してPRNGを作成する必要があります。「プログラムは次のアルゴリズムを使用して1000個の数値のシーケンスを生成する必要があります。seed=(1664525 * seed + 1013904223)%4294967296新しいシードごとに、seed/4294967296の10進値を出力します。 10進数を取得するには、この除算を行う前に、longをdoubleに変換する必要があることを忘れないでください!」必要に応じて笑うこともできますが、これは私がこれまで一緒に投げてきたものです、

  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を実行するプログラムの最初の年です。私は誰かに私の仕事をするように頼んでいません、それは私を助けませんが、ナッジはそうします。ありがとう

4

2 に答える 2

1

while私が見ることができる最初の問題は、との直後のセミコロンforです。それらはほぼ間違いなくあなたがそこに持ちたいものではありません。

于 2012-10-22T02:06:35.770 に答える
0

プログラムにコンパイル時エラーがあり、最初にそれらを修正します。

  1. 重複するローカル変数シード
  2. int 型のリテラル 4294967296 は範囲外です。したがって、4294967296.0 (ダブル) に変更します。
  3. while と for の最後にあるセミコロン (:) を削除します。
  4. do while ステートメントの構文が正しくありません。

do while ステートメントの目的は、数値を受け入れることだと思います。between -2147483648 and 2147483647. そうであれば、do while 条件は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();
        }
    }
}
于 2012-10-22T04:41:20.327 に答える