Math.random()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
Math.random() éæ
æ¹æ³æåå³ä¸å大æ¼çæ¼ 0 ä¸å°æ¼ 1 çæµ®é»å½é¨æ©æ¸ï¼å
¶å¨è©²ç¯åå
§å¤§è´ååå»åä½ââä½ å¯ä»¥å°å
¶ç¸®æ¾å°ä½ æ³è¦çç¯åãå¯¦ä½æé¸æäºæ¸çææ¼ç®æ³çåå§ç¨®åï¼ä½¿ç¨è
ç¡æ³é¸ææéè¨å®ã
å註ï¼Math.random() 䏿ä¾å¯ç¢¼å¸ä¸å®å
¨çäºæ¸ãè«å¿å°å
¶ç¨æ¼ä»»ä½èå®å
¨æ§ç¸éçäºç©ãè«æ¹ç¨ Web Crypto APIï¼æ´ç²¾ç¢ºå°èªªï¼æ¯ Crypto.getRandomValues() æ¹æ³ã
å試ä¸ä¸
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
console.log(getRandomInt(3));
// é æè¼¸åºï¼0ã1 æ 2
console.log(getRandomInt(1));
// é æè¼¸åºï¼0
console.log(Math.random());
// é æè¼¸åºï¼ä¸åå¾ 0 å° <1 çæ¸å
èªæ³
Math.random()
忏
ç¡ã
åå³å¼
ä¸å仿¼ 0ï¼å«ï¼å 1ï¼ä¸å«ï¼ä¹éçæµ®é»å½é¨æ©æ¸ã
ç¯ä¾
è«æ³¨æï¼ç±æ¼ JavaScript ä¸çæ¸åæ¯éµå¾ªåæ¨äºå
¥è³æè¿å¶æ¸è¡çºç IEEE 754 æµ®é»æ¸ï¼å æ¤ä»¥ä¸å½å¼ï¼ä¸å
æ¬ Math.random() æ¬èº«ï¼æè²ç¨±çç¯å並ä¸ç²¾ç¢ºãé常ï¼è²ç¨±çä¸éæ¯ç¡æ³éå°çï¼ä½å¦æ Math.random() åå³ä¸åé常æ¥è¿ 1 çæ¸åï¼å¾®å°çå·®ç°å¯è½ç¡æ³å¨è«æ±çæå¤§å¼ä¸è¡¨ç¤ºï¼å æ¤å°è´éå°ä¸éã
åå¾ä¸å仿¼ 0ï¼å«ï¼å 1ï¼ä¸å«ï¼ä¹éçäºæ¸
function getRandom() {
return Math.random();
}
åå¾ä¸å仿¼å ©åå¼ä¹éçäºæ¸
æ¤ç¯ä¾åå³ä¸å仿¼æå®å¼ä¹éçäºæ¸ãåå³å¼ä¸å°æ¼ï¼ä¸å¯è½çæ¼ï¼minï¼ä¸å°æ¼ï¼ä¸çæ¼ï¼maxã
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
åå¾ä¸å仿¼å ©åå¼ä¹éç鍿©æ´æ¸
æ¤ç¯ä¾åå³ä¸å仿¼æå®å¼ä¹éç鍿©æ´æ¸ã該å¼ä¸å°æ¼ minï¼å¦æ min 䏿¯æ´æ¸ï¼åçºå¤§æ¼ min çä¸ä¸åæ´æ¸ï¼ï¼ä¸å°æ¼ï¼ä½ä¸çæ¼ï¼maxã
function getRandomInt(min, max) {
const minCeiled = Math.ceil(min);
const maxFloored = Math.floor(max);
return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // æå¤§å¼ä¸å«ï¼æå°å¼å
å«
}
å註ï¼ä½¿ç¨ Math.round() ä¾éææ¤ç®çå¯è½å¾èªäººï¼ä½é樣åæå°è´ä½ çäºæ¸éµå¾ªéåå»åä½ï¼éå¯è½ä¸ç¬¦åä½ çéæ±ã
åå¾ä¸å仿¼å ©åå¼ä¹éï¼å«ï¼ç鍿©æ´æ¸
éç¶ä¸é¢ç getRandomInt() å½å¼å¨æå°å¼ä¸æ¯å
å«çï¼ä½å¨æå¤§å¼ä¸æ¯ä¸å
å«çãå¦æä½ éè¦çµæå¨æå°å¼åæå¤§å¼ä¸é½æ¯å
å«çå¢ï¼ä¸é¢ç getRandomIntInclusive() å½å¼å¯ä»¥éææ¤ç®çã
function getRandomIntInclusive(min, max) {
const minCeiled = Math.ceil(min);
const maxFloored = Math.floor(max);
return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // æå¤§å¼åæå°å¼é½å
å«
}
è¦ç¯
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-math.random> |