[英]Java PRNG from scratch
我必須使用以下參數創建PRNG“程序應使用以下算法生成1000個數字的序列:seed =(1664525 * seed + 1013904223)%4294967296對於每個新種子,打印出seed / 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 ) ;
} } } }
這是我執行java程序的第一年。 我不是要求任何人做我的工作,這不會幫助我,但是推動會。 感謝名單
我能看到的第一個問題是在while
和for
之后的分號。 那幾乎肯定不是你想要的。
您的程序有編譯時錯誤,首先要糾正它們。
我認為你的while語句的目的是接受between -2147483648 and 2147483647.
數字between -2147483648 and 2147483647.
如果是這樣,你的do條件應該是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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.