スキップしてメイン コンテンツに移動

node.js でメルセンヌ・ツイスタを使ってみる

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());
}

結果

console
random 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

感想

私は物理乱数生成器なくても生きていけそうです。

参考

mersennetwister

このブログの人気の投稿

node.js で SQLite を async を使用して同期的に使用する

node.js で SQLite を async を使用して同期的に使用する node.js で SQLite を使うと何が怖いって非同期処理って所。
どのようにコードが動くのか分かり辛い。

そこで同期処理っぽくしてみたい。


async というライブラリを使用するとそれっぽいことができるそうなのでサンプルを書いた。

記述試験の書き方(仮)

記述試験の書き方(仮) 1,まえがき   法学部の試験では記述式の試験が出てくる。   その試験では、あるテーマについて自由に論ぜよとされている。 しかし、論ぜよと言われても、どのように論じればいいのか、すなわち、記述の仕方について教わったことがない(よくよく考えると、法的文章力を習得させる事だけが目的の授業はないと思われる)。   本稿では、私自身が法学畜になり、見聞きし、実際に活用している論述方法についてまとめている、はずである。その要点は、①条文、判例、学説を使う。②単なる事実と法的事実を区別する。③文章内に一貫性を持たせる。である。