簡體   English   中英

在javascript中生成隨機整數的最快方法是什么?

[英]What is the fastest way to generate a random integer in javascript?

通常這就是你在 javascript 中獲得隨機數的方式。

Math.random();


然而,這種方法在生成隨機整數時似乎效率低下。

, then it has to be multiplied to a suitable range ( ).首先,隨機函數必須生成一個隨機小數,如 ,然后它必須乘以一個合適的范圍( )。 ).最后, floor 函數減去小數以產生結果(在本例中為 )。

var random_integer = Math.floor(Math.random()*101);

有沒有更快的方法在javascript中生成隨機整數?


編輯1:

我正在使用它來創建一個畫布 HTML5 游戲。 FPS 大約是 50,我的代碼非常優化,除了生成一個隨機數。

此代碼更快...鍵入。

var random_integer = Math.random()*101|0;

但是,它不適用於大量數字。

(而且它的運行速度不會更快,至少在 chrome 中不會。)

不過,如果您事先生成隨機數,您可以在游戲中獲得更快的速度。

for (var i=1e6, lookupTable=[]; i--;) {
  lookupTable.push(Math.random()*101|0);
}
function lookup() {
  return ++i >= lookupTable.length ? lookupTable[i=0] : lookupTable[i];
}

lookup將循環遍歷具有一百萬個隨機整數的數組。 它比調用randomfloor快得多(當然,生成查找表會預先產生“加載時間”懲罰)。

如果您想避免浮點計算,那么您可以通過編寫自己的偽隨機數生成器來實現。 是眾所周知的偽隨機數生成器 (PRNG) 的列表。 線性同余生成器是最容易實現的,並且在性能方面可能也是最有效的。 但是,您需要充分理解PRNG 背后理論才能編寫出有效的PRNG 但這可能不值得努力。 JS 實現應該足夠有效。 最后,您很可能會發現Math.random()比您的代碼運行得更快。

我主要使用

    var a = Math.floor(Math.random((number you'd like to be minimum, (number you'd like to be maximum) * (number you'd like to be maximum);
const getRandomInt = (base = 10) => {
  return Math.floor(Math.random() * base)
}

這是我使用的:

function getRandomInt(max) {
    return Math.floor(Math.random() * max);
}

如何使用它的一個例子是

function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
if(getRandomInt(420) == 69){
console.log("nice")
}

不,沒有更簡單或更短的方法。 不過,如果您需要多次執行此操作,則可以創建一個函數。

您的方法是在 javascript 中檢索隨機整數的正確方法,不要擔心它會快速運行的性能。

這是最短的單行隨機數生成器代碼

rnd=(a,b)=>~~(Math.random()*(b-a))+a

如何使用:rnd(min,max) 示例:rnd(10,100)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM