JS實現(xiàn)隨機數(shù)生成算法示例代碼
更新時間:2013年08月08日 15:38:18 作者:
JS實現(xiàn)隨機數(shù)生成算法的方法有很多,本文為大家介紹一個比較不錯的方法,代碼如下,感興趣的朋友可以參考下,希望對大家有所幫助
1:
var MT = [];
var index = 0;
function initialize_generator(seed) {
MT[0] = seed;
for (var i = 1; i < 624; i++) {
MT[i] = 0xffffffff & (0x6c078965 * (MT[i - 1] ^ (MT[i - 1] >> 30)) + i);
}
}
function generate_numbers() {
for (var i = 0; i < 624; 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;
}
}
}
function extract_number() {
if (index == 0) {
generate_numbers();
}
var y = MT[index];
y ^= (y >> 11);
y ^= ((y << 7) & 0x9d2c5680);
y ^= ((y << 15) & 0xefc60000);
y ^= (y >> 18);
index = (index + 1) % 624;
return y;
}
function mt_rand(min, max) {
return extract_number() % (max - min + 1) + min;
}
function test() {
initialize_generator(new Date().getTime());
var test = [0, 0];
for (var i = 0; i < 100000; i++) {
test[mt_rand(0, 1)]++;
}
return test;
}
2:
var random=function(t1,t2,t3){//t1為下限,t2為上限,t3為需要保留的小數(shù)位
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; // 小數(shù)位不能大于15位
var ra = Math.random() * (t2-t1)+t1,du=Math.pow(10,t3);
ra = Math.round(ra * du)/du;
return ra;
}
復(fù)制代碼 代碼如下:
var MT = [];
var index = 0;
function initialize_generator(seed) {
MT[0] = seed;
for (var i = 1; i < 624; i++) {
MT[i] = 0xffffffff & (0x6c078965 * (MT[i - 1] ^ (MT[i - 1] >> 30)) + i);
}
}
function generate_numbers() {
for (var i = 0; i < 624; 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;
}
}
}
function extract_number() {
if (index == 0) {
generate_numbers();
}
var y = MT[index];
y ^= (y >> 11);
y ^= ((y << 7) & 0x9d2c5680);
y ^= ((y << 15) & 0xefc60000);
y ^= (y >> 18);
index = (index + 1) % 624;
return y;
}
function mt_rand(min, max) {
return extract_number() % (max - min + 1) + min;
}
function test() {
initialize_generator(new Date().getTime());
var test = [0, 0];
for (var i = 0; i < 100000; i++) {
test[mt_rand(0, 1)]++;
}
return test;
}
2:
復(fù)制代碼 代碼如下:
var random=function(t1,t2,t3){//t1為下限,t2為上限,t3為需要保留的小數(shù)位
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; // 小數(shù)位不能大于15位
var ra = Math.random() * (t2-t1)+t1,du=Math.pow(10,t3);
ra = Math.round(ra * du)/du;
return ra;
}
您可能感興趣的文章:
- JS隨機洗牌算法之數(shù)組隨機排序
- 詳解js數(shù)組的完全隨機排列算法
- JavaScript隨機打亂數(shù)組順序之隨機洗牌算法
- javascript隨機之洗牌算法深入分析
- JavaScript實現(xiàn)的選擇排序算法實例分析
- 基于JavaScript實現(xiàn)的快速排序算法分析
- 基于JavaScript實現(xiàn)的希爾排序算法分析
- 基于JavaScript實現(xiàn)的插入排序算法分析
- JavaScript實現(xiàn)經(jīng)典排序算法之插入排序
- JavaScript實現(xiàn)經(jīng)典排序算法之選擇排序
- JavaScript實現(xiàn)經(jīng)典排序算法之冒泡排序
- JS實現(xiàn)的隨機排序功能算法示例
相關(guān)文章
利用javascript實現(xiàn)web頁面中指定區(qū)域打印
將需要打印的課程表的table放入div標簽中,然后指定出需要打印的區(qū)域,最后調(diào)用window.print打印指定內(nèi)容2013-10-10javascript實現(xiàn)百度地圖鼠標滑動事件顯示、隱藏
這篇文章主要介紹了javascript實現(xiàn)百度地圖鼠標滑動事件顯示、隱藏的思路和方法,十分的實用,這里推薦給小伙伴們,有需要的朋友可以參考下。2015-04-04JavaScript知識點總結(jié)(四)之邏輯OR運算符詳解
這篇文章主要介紹了JavaScript知識點總結(jié)(四)之邏輯OR運算符詳解的相關(guān)資料,在JavaScript中,邏輯OR運算符用||表示。本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧2016-05-05通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變
自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧,下面與大家分享下通過JavaScript可以簡單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變2013-06-06