在寫js中,我們經(jīng)常遇見 js 隨機(jī)函數(shù)走趋,總結(jié)一下最近寫驗(yàn)證碼的時(shí)候? 用到過的js 隨機(jī)函數(shù)
Math.random(); 結(jié)果為0-1間的隨機(jī)數(shù)(包括0,不包括1)
Math.floor( n ); 參數(shù)為Number 類型 爹谭,函數(shù)結(jié)果 為num 的整數(shù)部分
Math.round( n ) 寺谤; 參數(shù)為Number 類型。函數(shù)結(jié)果 為num 四舍五入部分
Math.ceil( n ); 參數(shù)為Number類型起意。 函數(shù)結(jié)果為大于等于n的整數(shù)
Math.ceil(Math.random()*10) :?主要獲取1到10的隨機(jī)整數(shù)鹰服,取0的幾率極小。
Math.round(Math.random()) :?可均衡獲取0到1的隨機(jī)整數(shù)
Math.round(Math.random()*10)??可基本均衡獲取0到10的隨機(jī)整數(shù)揽咕,其中獲取最小值0和最大值10的幾率少一半
Math.floor(Math.random()*10)?可均衡獲取0到9的隨機(jī)整數(shù)
例子:
? ? 1. 實(shí)現(xiàn)一個(gè) 隨機(jī) 漢字
? ?????? randomChi(){? ?// 隨機(jī)生成漢字
? ? ? ? ????????return `\\u${Math.round(Math.random() * 20901 + 19968 ).toString(16)}`;
? ? ? ? ? ?}
? ? 2. 實(shí)現(xiàn)一個(gè)n - m 的整數(shù) ( 參照于?http://www.jb51.net/article/56019.htm )
? ? ? ? 生成 n-m , 包含n 但不包含 m的整數(shù)
? ? ? ? ? ? 第一步算出 m -n的值悲酷,假設(shè)等于 w?
? ? ? ? ? ? 第二步 Math.random( )? * w
????????????第三步 Math.random() * w +n
????????????第四步 parseInt( Math.random() * w +n, 10)
? ? ? ? ?生成一個(gè) n-m ,包含 m 但不包含 n的整數(shù)
? ??????????第一步算出 m-n的值,假設(shè)等于w
? ? ? ? ? ? 第二步Math.random()*w
? ? ? ? ? ? 第三步Math.random()*w+n
? ? ? ? ? ? 第四步Math.floor(Math.random()*w+n) + 1
? ? ? ? ?生成一個(gè)不包含 n -m 但都不包含 n? 和 m
? ???????????第一步算出 m-n-2的值亲善,假設(shè)等于w
? ? ? ? ? ? ? 第二步Math.random()*w
? ? ? ? ? ? ? 第三步Math.random()*w+n +1
? ? ? ? ? ? ? ?第四步Math.round(Math.random()*w+n+1) 或者 Math.ceil(Math.random()*w+n+1)
????????????生成n-m设易,包含n和m的隨機(jī)數(shù):
????????????????第一步算出 m-n的值,假設(shè)等于w
? ? ? ? ? ? ? ? 第二步Math.random()*w
????????????????第三步Math.random()*w+n
????????????????第四步Math.round(Math.random()*w+n) 或者 Math.ceil(Math.random()*w+n)
? ? ? ? ? ? ?實(shí)例:?生成800-1500的隨機(jī)整數(shù)蛹头,包含800但不包含1500
? ??????????????1500-800 = 700
????????????????Math.random()*700
????????????????var num = Math.random()*700 + 800;
????????????????num = parseInt(num, 10);
更多實(shí)例 請(qǐng)查看? https://github.com/Mrangmaomao