[JavaScript] 独自に乱数を作成する

2015年12月5日

Javascript テクノロジー プログラミング

プログラム言語には乱数を作成するグローバル関数が存在しますが、興味本位で独自関数を作ってみました。 おそらくどの言語でも同じ法則で作成することができると思いますが、今回はJavaScriptで作ります。

解説

PCというのは、正確に計算する事を目的として作られているので、乱数というのは本来存在しません。 なのであくまで「擬似乱数」という事で話を進めます。 ここでは計算して乱数として値を取得するという方式を行います。 「線形合同法」という方式を使う事で、下記の公式で行います。
適当な数値(今回はミリ秒の値4桁文) -> 2乗 = 下位4桁を取得
これを繰り返すとランダムな4桁の数値が表示されますが、乱数としては精度が低いのが難点です。 しかし、10回ぐらいであれば、問題なくランダム値っぽいのが取得できるのでとりあえず、第1弾としてはこれでOKとする。

コード

index.html

<script src="random.js"></script> <h1>Random</h1> <script>document.write(rnd());</script>

random.js

function rnd(){ var mt = (+new Date()).toString(); var a = mt.substr(-4); //a = a.substr(0,2); var r=[]; for(var i=1;i<=10;i++){ a = Math.pow(a,2); a+= 1000; a = a.toString(); var b = a.substr(-6).substr(0,4); r.push(b); a = parseInt(b,10); } return r.join("<br>"); }

実行

0574 3304 9174 1632 6644 1437 0659 4352 9409 5302

備考

そもそもJavaScriptで基本的に乱数を取得するには、以下の構文でいいのだが、この関数に難点はないのだが、あくまで興味本位でのトライです。 Math.random();

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。