簡単な PRNG プロジェクトを実行中。Math.pow の奇妙な動作に遭遇し、単純に数値を掛け合わせました。これの原因は何ですか?PRNG クラスと、プログラムの実行に使用したメイン クラスを含めました。結果を比較すると、最初はうまくいきましたが、3 回目の繰り返しで、乗算 PRNG が Math.pow() PRNG から分岐しています。乗法PRNGも負の数を与え始めます。それはすべきではありません。
public class PRNG {
int seed;
/**
* Creates a PRNG with the seed x0
*/
public PRNG(int x0){
this.seed = x0;
}
/**
* Return the next random number
*/
public int nextRand(){
//seed = (int) ((Math.pow(7, 5) * seed) % (Math.pow(2, 31) - 1));
seed = (int) ((7*7*7*7*7 * seed) % (Math.pow(2, 31) - 1));
return seed;
}
}
主要:
public class main {
final static int SEED = 1;
public static void main(String[] args) {
PRNG prng = new PRNG(SEED);
for(int i = 0; i < 100; i++){
System.out.println(prng.nextRand());
}
}
}
前もって感謝します!