Math.randomの代わりにメルセンヌツイスターで偏りのないランダムな数字を取得する

2015年9月24日 javascripts


WEBダイスでランダムな出目を作るために、javascriptsのMath.random関数を使っていたのですが、
「JavascriptのMath.randomは偏りが酷いので、メルセンヌツイスター等を使ったライブラリを利用したほうが良いかと思います。」
とのアドバイスをいただきましたので、メルセンヌツイスターを実装してみました!

メルセンヌツイスター
http://homepage2.nifty.com/magicant/sjavascript/mt.html

 

Math.randomの代わりにメルセンヌツイスターで偏りのないランダムな数字を取得する

メルセンヌツイスターのサイトの「使い方」を見ると、

このように書いてありました!
Math.random関数の部分を上記のように書き換えれば良いのですが、私はこれを見たときに実際にどう使えば良いか分からなかったので、実際にMath.random関数をメルセンヌツイスターで書き換えてみます!

 

Math.randomで作った6面ダイスのソース

まず、Math.random関数で作った6面ダイスのソースを見てみましょう!

 

HTMLソース

この<input type="button" value="ダイスロール" onclick="getDice();">をクリックすると、
<span id="condice"></span>の中に1~6の数字がランダムで表示されるようにします。

 

Javascriptsソース

このように、Math.random関数の場合は、

と書くことで、0~5までの数字をランダムに1つ、選び出すことができます。
Math.floor()は小数点以下を切り捨てて整数にしてくれる命令文です。

javascriptsでは数字が0から始まるため、HTMLに書き出すときに、↑のようにdiceに+1をします。

これをメルセンヌツイスターに置き換えてみましょう!

 

メルセンヌツイスターに置き換えてみる

まずHTMLソースです。

3行目の黄色でマークした列のように、headタグ内でmt.jsを読み込みます。
mt.jsは
http://homepage2.nifty.com/magicant/sjavascript/mt.html
↑こちらのサイトからDLし、適当な階層に置いてください。
この場合は、このHTMLファイルと同じ階層にある、jsフォルダの中に入れています。

 

次にjavascriptsです。

まず2行目

↑で、メルセンヌツイスターを読み込みます。

そして3行目では、Math.random関数で

と書いていたところを、

と書き換えます!
これで、0 以上 6 未満の整数、つまり0~5までの数字をランダムに1つ、選び出すことができます。整数なのでMath.floorは不要です。
HTMLに書き出すときには、Math.random関数で書いていたときと同様に、+1をして1~6の数字にします。

 

このように、手軽に偏りのないランダムな数字を呼び出すことができました!
書き換え方を教えてくださった知り合いのエンジニアさんに感謝\(^o^)/


コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

カテゴリ

CONTACT

管理人:いのり

何かあればこちらよりお問い合わせください。

お問い合わせ