1:
var MT = [];
変数インデックス = 0;
関数Initialize_generator(シード) {
MT[0] = シード;
for (var i = 1; i MT[i] = 0xffffffff & (0x6c078965 * (MT[i - 1] ^ (MT[i - 1] >>) 30))i);
}
}
function generated_numbers() {
for (var i = 0; i var y = (MT[i] & 0x80000000) (MT [(i 1) % 624] & 0x7fffffff);
MT[i] = MT[(i 397) % 624] ^ (y > 1);
if (y % 2 != 0) {
MT[i] ^= 0x9908b0df;
}
}
}
関数 extract_number() {
if (index == 0) {
generate_numbers();
}
var y = MT[インデックス];
y ^= (y > 11);
y ^= ((y y ^= ((y y ^= (y > 18);
インデックス = (インデックス 1) % 624;
y を返します。
}
function mt_rand(min, max) {
return extract_number() % (max - min 1) min;
}
function test() {
initialize_generator(new Date().getTime());
var テスト = [0, 0];
for (var i = 0; i test[mt_rand(0, 1)] ;
}
テストを返します。
}
2:
var random=function(t1,t2,t3){//t1 は下限、t2 は上限、t3 は必要な保持される小数桁
function isNum(n){
return /^d $/ .test(n);
}
if(!t1 || (! isNum(t1)) ){t1=0;}
if(!t2 || (! isNum(t2)) ){t2=1;}
if(!t3 || (! isNum(t3)) ){t3=0;}
t3 = t3>15?15:t3; // 小数位は 15 位を超えることはできません
var ra = Math.random() * (t2-t1) t1,du=Math.pow(10,t3);
ra = Math.round(ra * du)/du;
ra を返します。
}