JS生成隨機(jī)數(shù)的多種方法匯總(不同范圍、類(lèi)型的隨機(jī)數(shù))
1,生成 [ 0, 1 ) 范圍內(nèi)的隨機(jī)數(shù)(大于等于0,小于1)
(1)使用 random() 方法可以返回一個(gè)介于 0 ~ 1 之間的偽隨機(jī)數(shù)(包括 0,不包括 1)。
Math.random()
(2)下面是一個(gè)測(cè)試樣例
var random = Math.random(); console.log(random);
2,生成 [ n, m ) 范圍內(nèi)的隨機(jī)數(shù)(大于等于n,小于m)
(1)這種最簡(jiǎn)單,因?yàn)楹?random 的特點(diǎn)保持一致。只需使用如下公式即可:
Math.random()*(m-n)+n
(2)比如下面生成 [10,15) 范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。
var random1 = Math.random()*(15-10)+10; var random2 = Math.random()*(15-10)+10; var random3 = Math.random()*(15-10)+10; console.log(random1); console.log(random2); console.log(random3);
3,生成 [n,m]、(n,m)、(n,m] 范圍內(nèi)的隨機(jī)數(shù)
因?yàn)?random 的特點(diǎn),要取得這幾個(gè)區(qū)間內(nèi)的浮點(diǎn)數(shù)稍微麻煩些,需要借助一些判斷才能滿足要求。
//取得[n,m]范圍隨機(jī)數(shù)
function fullClose(n,m) {
var result = Math.random()*(m+1-n)+n;
while(result>m) {
result = Math.random()*(m+1-n)+n;
}
return result;
}
//取得(n,m)范圍隨機(jī)數(shù)
function fullOpen(n,m) {
var result = Math.random()*(m-n)+n;
while(result == n) {
result = Math.random()*(m-n)+n;
}
return result;
}
//取得(n,m]范圍隨機(jī)數(shù)
function leftOpen(n,m) {
var result = Math.random()*(m-n+1)+n-1;
while(result<n) {
result = Math.random()*(m-n+1)+n-1;
}
return result;
}隨機(jī)整數(shù)的生成
要生成隨機(jī)整數(shù),我們還需要借助如下兩個(gè)方法: Math.round(num):將 num 四舍五入取整 Math.floor(num):將 num 向下取整,即返回 num 的整數(shù)部分。當(dāng)然我們也可以使用 parseInt() 方法代替。
1,隨機(jī)生成 0、1 這兩個(gè)整數(shù)
(1)下面這個(gè)方法可以隨機(jī)獲取 0 或 1,它們獲取到的幾率是比較均衡的。
Math.round(Math.random())
(2)下面是一個(gè)測(cè)試樣例
var random1 = Math.round(Math.random()); var random2 = Math.round(Math.random()); var random3 = Math.round(Math.random()); console.log(random1); console.log(random2); console.log(random3);
2,生成 [ 0, n ) 范圍內(nèi)的隨機(jī)整數(shù)(大于等于0,小于n)
(1)下面方法生成一個(gè) 0 到 n-1 的隨機(jī)整數(shù)(這 n 個(gè)數(shù)獲取幾率都是均衡的)
Math.floor(Math.random()*n)
(2)比如下面生成幾個(gè) 0 到 4 的隨機(jī)整數(shù)(包括 0 和 4)。
var random1 = Math.floor(Math.random()*5); var random2 = Math.floor(Math.random()*5); var random3 = Math.floor(Math.random()*5); console.log(random1); console.log(random2); console.log(random3);
3,生成 [ 1, n ] 范圍內(nèi)的隨機(jī)整數(shù)(大于等于1,小于等于n)
(1)下面方法生成一個(gè) 1 到 n 的隨機(jī)整數(shù)(這 n 個(gè)數(shù)獲取幾率都是均衡的)
Math.floor(Math.random()*n)+1
(2)比如下面生成幾個(gè) 1 到 5 的隨機(jī)整數(shù)(包括 1 和 5)。
var random1 = Math.floor(Math.random()*5)+1; var random2 = Math.floor(Math.random()*5)+1; var random3 = Math.floor(Math.random()*5)+1; console.log(random1); console.log(random2); console.log(random3);
4,生成 [ min, max ] 范圍內(nèi)的隨機(jī)整數(shù)(大于等于min,小于等于max)
(1)下面方法生成一個(gè)最小值為 min,最大值為 max 的隨機(jī)整數(shù)。
Math.floor(Math.random()*(max-min+1))+min
(2)比如下面生成幾個(gè) 5 到 10 的隨機(jī)整數(shù)
var random1 = Math.floor(Math.random()*5)+1; var random2 = Math.floor(Math.random()*5)+1; var random3 = Math.floor(Math.random()*5)+1; console.log(random1); console.log(random2); console.log(random3);
隨機(jī)字符串的生成
1,生成指定位數(shù)的純數(shù)字字符串
//生成n位數(shù)字字符串
function randomNum(n){
var res = "";
for(var i=0;i<n;i++){
res += Math.floor(Math.random()*10);
}
return res;
}
//測(cè)試
console.log(randomNum(3))
console.log(randomNum(5))
console.log(randomNum(7))2,生成指定位數(shù)的數(shù)字字母混合的字符串
//生成n位數(shù)字字母混合字符串
function generateMixed(n) {
var chars = ['0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
var res = "";
for(var i = 0; i < n ; i++) {
var id = Math.floor(Math.random()*36);
res += chars[id];
}
return res;
}
//測(cè)試
console.log(generateMixed(3))
console.log(generateMixed(5))
console.log(generateMixed(7))對(duì)比上面代碼的補(bǔ)充版,加入 數(shù)字、大小寫(xiě)字符
function getjl(n){
var chas=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var binint=["0","1","2","3","4","5","6","7","8","9"];
var res="";
for(var i=0; i < n; i++){
var id = Math.floor(Math.random() * 62);
res+=chas[id];
}
return res;
}
//測(cè)試
console.log(getjl(3))
console.log(getjl(5))
console.log(getjl(7))總結(jié)
到此這篇關(guān)于JS生成隨機(jī)數(shù)的多種方法匯總的文章就介紹到這了,更多相關(guān)JS生成隨機(jī)數(shù)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript中隨機(jī)數(shù)方法?Math.random()
- Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證
- Js生成隨機(jī)數(shù)/隨機(jī)字符串的方法小結(jié)【5種方法】
- JavaScript隨機(jī)數(shù)的組合問(wèn)題案例分析
- js實(shí)現(xiàn)隨機(jī)數(shù)小游戲
- js控制隨機(jī)數(shù)生成概率代碼實(shí)例
- JavaScript生成指定范圍隨機(jī)數(shù)和隨機(jī)序列的方法
- javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié)
- JS隨機(jī)數(shù)產(chǎn)生代碼分享
- JavaScript中獲取隨機(jī)數(shù)的幾種方法小結(jié)
相關(guān)文章
js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果,實(shí)例分析了javascript結(jié)合css與數(shù)組實(shí)現(xiàn)城市選擇框的方法,需要的朋友可以參考下2015-06-06
全面解析Bootstrap中tooltip、popover的使用方法
這篇文章主要為大家詳細(xì)解析了Bootstrap中tooltip、popover的使用方法,了解提示框、彈出框的實(shí)現(xiàn)原理,感興趣的朋友可以參考一下2016-06-06
Typescript實(shí)現(xiàn)隊(duì)列的示例代碼
隊(duì)列作為一種數(shù)據(jù)結(jié)構(gòu),在現(xiàn)實(shí)生活中它可應(yīng)用于電影院、自助餐廳等場(chǎng)合,本文主要介紹了Typescript實(shí)現(xiàn)隊(duì)列的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
詳解webpack之scss和postcss-loader的配置
本篇文章主要介紹了詳解webpack之scss和postcss-loader的配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
js實(shí)現(xiàn)改進(jìn)的仿藍(lán)色論壇導(dǎo)航菜單效果代碼
這篇文章主要介紹了js實(shí)現(xiàn)改進(jìn)的仿藍(lán)色論壇導(dǎo)航菜單效果代碼,涉及JavaScript頁(yè)面元素的遍歷及樣式動(dòng)態(tài)變換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

