JS生成指定範圍內的隨機數

1、業務需求

因爲公司最近在申請ICP證書,須要作一個符合申請ICP證的電商平臺網站,因爲大多數據功能並不須要真實數據,因此網站上的大多數數據都是由前端去模擬的隨機數據javascript

2、預備知識

Math.random //函數生成一個[0, 1)範圍內的隨機數
Math.floor(n) //向下取整,返回一個n的整數部分的數
Math.ceil(n) //向上取整,返回一個大於等於n的最小整數

3、業務場景

//現有一個長度爲5的包含5個用戶信息的數組,須要隨機取出數組中的其中一個對象
var users = [{ 
   name: '賈會亮',        
   phone: '18938919697',       
   qq: '348531467/3002745920',       
   wx: 'daxiong0514',        
   email: '348531467@qq.com',    
   address: '深圳市寶安區西鄉臣田工業區2樓'  
  },{ 
   name: '宋嫦娥',        
   phone: '13613040547',       
   qq: '2646720073',       
   wx: '13613040547',      
   email: '2646720073@qq.com',      
   address: '廣東省東莞市鳳崗鎮雁田村長塘工業園怡紅路物流園B棟2樓'     
 },{       
   name: '黃麗',       
   phone: '13680222498',     
   qq: '3521806322',   
   wx: '13680222498',     
   email: 'TIEFU2018VIP@163.com',    
   address: '中國廣東佛山市順德區均安鎮暢興工業園生安路2號,528329'    
  },{       
   name: '竇小姐',    
   phone: '+86 153 2287 1043',    
   qq: '1526332481',    
   wx: '15322871043',     
   email: 'k494929466@lvtudianzi.cn',   
    address: '東莞市塘廈鎮蓮湖社區塘蓮三街13號B棟'  
  },  
  {     
   name: '周奎奎 & 黃雲祥', 
   phone: '13510845288 & 17688716770',    
   qq: '1056941156 & 776226678',    
   wx: '13510845288 & 17688716770',  
   email: '776226678@qq.com',     
   address: '深圳市龍華新區大浪街道華輝路同勝科技大廈A座803-804'  
  }]  複製代碼


4、過程分析

一、數組長度爲5,因此咱們只須要隨機出[0, 4]中的任意一個整數a做爲數組的索引去隨機取出一個對象,也就是 var user = users[a]
二、咱們知道Math.random()可以生成[0,1)的隨機數,那麼Math.random() * 4就能生成[0, 4)的隨機數了,可是取不到邊界值4,那麼咱們再將Math.random() * 5就能生成[0, 5)的隨機數,這樣咱們就能取到[0, 4]範圍內的數了,最後再經過Math.floor函數來實現Math.floor( Math.random() * 5 ) ,最終生成的隨機數將在[0, 4]範圍內的整數了
前端

var users = [{   
    name: '賈會亮',    
    phone: '18938919697',     
    qq: '348531467/3002745920',     
    wx: 'daxiong0514',   
    email: '348531467@qq.com',    
    address: '深圳市寶安區西鄉臣田工業區2樓'  
   },{     
    name: '宋嫦娥',     
    phone: '13613040547',    
    qq: '2646720073',   
    wx: '13613040547',  
    email: '2646720073@qq.com', 
    address: '廣東省東莞市鳳崗鎮雁田村長塘工業園怡紅路物流園B棟2樓'   
   },{      
    name: '黃麗',     
    phone: '13680222498',    
    qq: '3521806322',   
    wx: '13680222498',    
    email: 'TIEFU2018VIP@163.com',  
    address: '中國廣東佛山市順德區均安鎮暢興工業園生安路2號,528329'  
   },{     
    name: '竇小姐',    
    phone: '+86 153 2287 1043', 
    qq: '1526332481',     
    wx: '15322871043',   
    email: 'k494929466@lvtudianzi.cn', 
    address: '東莞市塘廈鎮蓮湖社區塘蓮三街13號B棟'  
   },{   
     name: '周奎奎 & 黃雲祥',    
     phone: '13510845288 & 17688716770',   
     qq: '1056941156 & 776226678',    
     wx: '13510845288 & 17688716770',    
     email: '776226678@qq.com',     
     address: '深圳市龍華新區大浪街道華輝路同勝科技大廈A座803-804'  
   }]
   var user = users[Math.floor( Math.random() * 5 )] // 0, 1, 2, 3, 4複製代碼


5、進一步分析生成[n, m]之間的整數

一、假如咱們如今要生成一個[70, 80]範圍內的整數,咱們能夠這樣思考,咱們能夠將這個域的最大值和最小值都減去70,那麼咱們只要生成一個[0, 10]範圍內的整數,最後的結果再加上70(70也就是域的最小邊界值)就行了,代碼以下:java

function getRandom (n, m) {
    var num = Math.floor(Math.random() * (m - n + 1) + n)
    return num
}

var number = getRandom(70, 80) 
console.log(number) //70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80複製代碼
相關文章
相關標籤/搜索