機數方法是javaScript中經常使用的一種方法。 例如,需要在屏幕上的一個隨機位置顯示一幅圖像,編寫的小游戲要扔骰子等。javaScript中Math對象的random()方法生成0-1之間的隨機數,它的隨機數種子采用系統時間,因此可以基本保證每次調用random()方法時都會采用不同的偽隨機數序列。下面來對javascript中的各種隨機數方法做一個總結。
基本的隨機數
在javaScript中最簡單的使用隨機數的方法是Math.random()方法。我們可以直接在chrome瀏覽器的控制臺中測試一下這個方法,如下圖:
Math.random()方法總是會返回0-1之間的浮點數。Math.random()方法返回的隨機數可能是0,但是永遠不會是1。
返回兩個指定數值之間的隨機數(不包含最大值)
在實際使用中,我們可能需要獲取兩個指定數值之間的隨機數。同樣,我們獲取的這個隨機數可能等于最小值,但是不會等于最大值。
1、獲取兩個指定數值之間隨機浮點數。
function getRandomFloat(min, max) {
return Math.random() * (max - min) + min;
}
例如下面是在控制臺中執行該函數得到50到100之間的隨機浮點數的結果。
2、獲取兩個指定數值之間隨機整數。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
例如下面是在控制臺中執行該函數得到50到100之間的隨機整數的結果。
返回兩個指定數值之間的隨機數(包含最大值)
如果需要返回的隨機數可以包含最大值,可以使用下面的函數來實現。
function getRandomInRange(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
拋硬幣(隨機布爾值)
如果你想使用0和1來代表拋硬幣的結果,代碼類似下面的樣子。
function coinToss() {
return Math.floor(Math.random() * 2);
}
如果你需要返回實際的true
或false
值,代碼如下。
function coinToss() {
return (Math.floor(Math.random() * 2) === 0);
}
使用Web Cryptography API來生成一組隨機數
Web Cryptography API是W3C發布的Web加密API(Web Cryptography API)的標準草案。該文檔定義了在Web應用中執行基本加解密操作的JavaScript API,如哈希操作(hash)、簽名生成和驗證(signature generation and verification),以及加密解密等。此外,該文檔還描述了與密鑰管理有關的操作。API的用途覆蓋用戶或服務的認證、文檔或代碼的簽名、通信的機密性與完整性保證等。
我們可以使用Web Cryptography API來生成一組隨機數。
var cryptoStor = new Uint16Array(8);
上面的代碼會生成包含8個16位無符號整數的數組。其它可以使用整數選項有:Int8Array,Uint8Array,int16Array,Int32Array 和 Uint32Array。
然后使用隨機數來填充數組。
window.crypto.getRandomValues(cryptoStor);
JavaScript中Math對象提供了一個random方法, 函數返回一個浮點數,隨機數在范圍從0 到小于1,也就是說,從 0(包括 0)往上,但是不包括 1(排除 1)
console.log("第一次: ", Math.random()); // 0.11548793236830579
console.log("第二次: ", Math.random()); // 0.40543646157371227
/**
* 生成一個范圍內的隨機數
*/
const getRandom = (min, max) => {
// 首先我們獲取一個[0,1)的浮點數
const floatRandom = Math.random();
// 然后計算出最大值和最小值之間的范圍, 加1是為了可以等于max
const difference = max - min + 1;
// 生成[0,difference]之間的隨機數, 向下取整
const random = Math.floor(difference * floatRandom);
// 返回[min, difference + min] => [min, max]
const randomWithinRange = random + min;
return randomWithinRange;
};
console.log(getRandom(7, 9));
我們用JavaScript寫效果的時候經常會用到一些隨機數,比如我們在做隨機點名,或者說我們開年會的時候寫一個隨機的抽獎的效果,這些效果當中都要用到JavaScript抽取隨機數,很多同學在抽取隨機數的時候不好掌握技巧,其實,抽取隨機數非常簡單,只需要我們掌握JavaScript這門語言的Math對象里的抽取隨機數的公式就可以。
JavaScript中數學對象Math抽取隨機數的公式詳解
下面是抽取隨機數的公式:
取0-1之間的隨機小數(取值范圍無限接近于0,無限接近于1):Math.random();
取x到y之間的隨機數:Math.random()*(y-x)+x;
例如,取12至29之間的隨機小數(取值范圍無限接近于12,無限接近于29):Math.random()*(29-12)+12;
取x到y之間的隨機整數(能取到x和y):Math.floor(Math.random()*(y+1-x)+x);
例如,取12到29之間的任意的隨機整數(能取到12和29):Math.floor(Math.random()*(29+1-12)+12);
如果還有疑問可以到后盾網論壇進行提問:bbs.houdunwang.com,有專業的老師及時幫你解答哦!
【本文來自 孫琪崢博客 http://www.sunqizheng.com/,想獲取更好的頁面瀏覽效果或者有任何問題請進入博客,同時也可在博主評論區進行留言,讓博主為大家答疑解惑~】
*請認真填寫需求信息,我們會在24小時內與您取得聯系。