プログラム言語には乱数を作成するグローバル関数が存在しますが、興味本位で独自関数を作ってみました。
おそらくどの言語でも同じ法則で作成することができると思いますが、今回は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();
0 件のコメント:
コメントを投稿