[k-matsuのページトップ]>[電脳小物]>[京ぽん]>[京ぽん用乱数クラス]
京ぽん(AH-K3001V)のOperaでは、JavaScriptで乱数の生成に標準のMath.random()を使用するとOperaを起動するたびに同じ乱数列を生成してしまいます。乱数生成に使用する種が毎回同じ数値になっていると思われます。
これでは乱数としては不適切であり不便なので、乱数クラスを作成しました。
京ぽん以外でも動作しますので、乱数は本クラスを使って生成するようにするとPCでも京ぽんでも同様にランダムな乱数を利用できます。
なお、乱数のアルゴリズムはhttp://www.sm.rim.or.jp/~shishido/pie.htmlを参考にさせていただきました。
特にありませんが、どこかにhttp://www.age.jp/~k-matsu/kyoupon/develop/randomize.htmlのを使用とか引用とか書いていただけると嬉しいです(必須ではありません)。
//乱数アルゴリズム参考:http://www.sm.rim.or.jp/~shishido/pie.html function Randomize(seed) { this.srand=function(seed) { tmpdt=new Date(); this.seed=this.srand.arguments.length ? seed : tmpdt.getSeconds()*1000+tmpdt.getMilliseconds(); } this.random=function() { this.seed=(this.seed*2061+7)%65536; return this.seed/65536; } this.randomi=function(range) { return Math.floor(this.random()*range*10)%range; } Randomize.arguments.length ? this.srand(seed) : this.srand(); }
//変数定義 var rnd,i,x; // Randomizeオブジェクト生成 rnd=new Randomize(); // 引数なし→乱数の種は現在時刻から //乱数生成 x=rnd.random(); // 0以上1未満の実数乱数生成(Math.random()と同様) i=rnd.randomi(6); // 0以上5以下の整数乱数生成
私が公開している京ぽん用ゲームのすべてで本クラスを使用していますので、各ゲームのソースを参照してください。
[k-matsuのページトップ]>[電脳小物]>[京ぽん]>[京ぽん用乱数クラス]