[英]Fastest way to generate a lot of unique small random numbers in 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中生成隨機整數?
我正在使用它來創建一個畫布 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
將循環遍歷具有一百萬個隨機整數的數組。 它比調用random
和floor
快得多(當然,生成查找表會預先產生“加載時間”懲罰)。
我主要使用
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.