node.js でメルセンヌ・ツイスタを使ってみる
概要
node.js でメルセンヌ・ツイスタを使ってみる。
メルセンヌ・ツイスタとは?
乱数を作成するアルゴリズムです、このアルゴリズムが出来る前の乱数の品質と比べると、とても高い品質の乱数のを生成できるそうです。
今回は、ありがたいことに先人様がメルセンヌ・ツイスタのモジュールを作られておりましたので、そのモジュールを使用させていただきます。
準備
npm install mersennetwister
ソースコード
test-mt.js"use strict";
// 乱数生成ハードウェアを誰かさんにおすすめしたので
// node.js でメルセンヌ・ツイスタを使ってみようと思う。
// 参考
// https://www.npmjs.org/package/mersennetwister
var MersenneTwister = require('mersennetwister');
var seed = new Date().getTime();
var mt = new MersenneTwister(seed);
console.log("random 32-bit integer : " + mt.int()); // random 32-bit integer
console.log("random 31-bit integer : " + mt.int31()); // random 31-bit integer
console.log("***** random float in the interval *****");
console.log("[0;1[ with 32-bit resolution : " + mt.rnd()); // random float in the interval [0;1[ with 32-bit resolution
console.log("[0;1[ (same as mt.rnd() above : " + mt.random()); // random float in the interval [0;1[ (same as mt.rnd() above)
console.log("[0;1[ with 53-bit resolution : " + mt.rndHiRes()); // random float in the interval [0;1[ with 53-bit resolution
console.log("[0;1] : " + mt.real()); // random float in the interval [0;1]
console.log("]0;1[ : " + mt.realx()); // random float in the interval ]0;1[
console.log("Get 20 randm num.");
for (var i = 0; i < 20; ++i) {
console.log(mt.int());
}
結果
consolerandom 32-bit integer : 3361983155 random 31-bit integer : 1075484222 ***** random float in the interval ***** [0;1[ with 32-bit resolution : 0.6424563720356673 [0;1[ (same as mt.rnd() above : 0.2669790524523705 [0;1[ with 53-bit resolution : 0.8806914008955259 [0;1] : 0.030056524330297606 ]0;1[ : 0.7159623290644959 Get 20 randm num. 2983655224 46984516 2593960713 3944391846 2917759393 2613605667 3381154927 4280000911 2607990047 2985536421 3036380415 1156428659 2766235998 2406919479 3341605894 347666700 1479780645 3380667811 1631716601 309760424