爲什麼有人會在Math.random
結果上致電Math.floor
?我已經看到了使用,如:爲什麼要將Math.floor與Math.random結合使用?
Math.floor(Math.random() * num);
有人能解釋嗎?
爲什麼有人會在Math.random
結果上致電Math.floor
?我已經看到了使用,如:爲什麼要將Math.floor與Math.random結合使用?
Math.floor(Math.random() * num);
有人能解釋嗎?
Math.random
返回0和1
之間的浮點數在範圍[0,則返回一個浮點,僞隨機數,1),是從0(含)最多但不包括1(獨佔),然後您可以縮放到您想要的範圍。
將此乘以n,得出0(含)和n(不含)之間的浮點數。
Math.floor
然後用於將此浮點數轉換爲0到n - 1(含)之間的整數。
Math.random()
會給你一個很長的隨機小數。通常所做的就是將該小數乘以10,100,1000等,以得到一個隨機的整數。但是,由於這樣的小數點很長,爲了得到一個絕對的整數,您使用Math.floor()
來減少該數字。
爲什麼我要結合Math.floor
與Math.random
?
你把它們組合起來,否則它會返回一個浮點數。使用Math.floor可確保它是指定範圍內的整數。
Math.random返回一個介於0和1之間的單位。將其乘以num
或最大範圍將得到一個具有該數字最大值的值(1 * num
)。 Math.floor再一次強迫它成爲一個整數。
幕後:
隨機數 - > 0.35 - 由最大值乘以>的(num
)11 - >獲取3.85 - > Math.floor(3.85) - > 3.
記住,num
是MAX + 1。將num
設置爲5將僅生成數字1-4!
你可以看看這個鏈接獲取更多信息:http://www.javascriptkit.com/javatutors/randomnum.shtml
田田:)
Math.random()
回報像0.8747230430599302
之間[0,1)
我們使用.floor
圓它下降到最接近的整數。例如:
Math.random()*5 == 2.5889716914389282
這會在[0,5)之間生成一個數字。
Math.floor(Math.random()*5) == 2 //in this scenario
生成[0,4]
之間的數字打破Math.floor(Math.Random() * num)
分解成它的各個部分,並解釋每一塊,你會得到這樣的:
Math.random()
給你0和1之間的隨機十進制數,包括0,但不包括1.所以,它可能會給你類似0.38548569372
。
Math.random() * num
給你一個0到num之間的隨機小數,包括0,但不包括num。所以,如果num是10,它可能會給你3.8548569372
。
Math.floor(Math.random() * num))
給你一個0到num之間的隨機整數,包括0,但不包括num。所以,它可能會給你3
。
Math.floor()
將十進制數截斷爲僅整數部分。隨機整數通常用於從數組中獲得一個隨機值(它需要是一個整數)。
它用於獲取介於0和(max - 1)之間的整數隨機數。
在另一方面它的速度更快在
const randomInt = Math.random() * num | 0;
的| 0
使用| 0
作爲是二進制或0其中的JavaScript SPEC有效表示,結果被轉換成一個整數的|
發生之前。請注意,| 0
與Math.floor
不一樣。 | 0
輪到0,而Math.floor
下輪。
| 0 Math.floor
------+------+------------
2.5 | 2 | 2
1.5 | 1 | 1
0.5 | 0 | 0
-0.5 | 0 | -1
-1.5 | =1 | -2
-2.5 | -2 | -3
var num = Math.floor(Math.random() * 1000); // e.g. 885
var flNum = Math.random() * 1000; //e.g. 885.9936205333221
嘗試的Math.random()* 1000例如,你可能會得到這樣的事情:885.9936205333221,在很多情況下,我們需要一個圓形的數量,所以很多開發商Math.floor或數學使用.ceil得到一個像885的整數,如果你的情況,你不介意有一個浮點數,因爲它是...
有關Math.floor如何工作的更多信息,請查看此鏈接:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
誰是「我們」? :) –
@quixoto因爲我多次看到這段代碼,這就是爲什麼我說「我們」,生病無論如何改變它> –
我並沒有批評你的措辭。對於這類問題來說,這很有用,可以說明這是你經常看到的東西,或者經常在某種類型的代碼中看到,這樣人們就可以獲得上下文並知道如何最好地回答你。 –