【計算2】疑似乱数《新・Bランクup》

新・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);
   }
});
hogeちゃんの画像

大きな値になるので 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);
   }
});
hogeちゃんの画像

実装例 C++の場合を参照。

コメント