新・Bランクレベルアップメニュー【計算 2】疑似乱数
【計算 2】疑似乱数 コード 1/2
reader.on('close', () => {
const [X, M, N] = lines[0].split(' ').map(Number);
for (let i = 1; i <= N; i++) {
let n = BigInt(0);
for (let j = i; j > 0; j--) {
n += BigInt(X) ** BigInt(j);
}
let rnd = Number(n % BigInt(M));
console.log(rnd);
}
});
大きな値になるので BigInt()
を使いました。
【計算 2】疑似乱数 コード 2/2 (C++実装例参照)
reader.on('close', () => {
const [X, M, N] = lines[0].split(' ').map(Number);
let pow = 1;
let seed = 0;
for (let i = 0; i < N; i++) {
pow *= X;
pow %= M;
seed += pow;
seed %= M;
console.log(seed);
}
});
実装例 C++の場合を参照。
コメント