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