嗨,我对 JS 有点陌生,所以我尝试这样做,我这样做是为了测试随机函数,我只想显示低于 0.8 的随机数,但有时它也连续多次显示高于 0.8,如何我要修吗?这是我在这里的第一篇文章,如果我做错了什么,很抱歉。谢谢。:)
function rn() {
var a = Math.random()
return a
}
function writerandon() {
var x = 0
while (x < 100) {
if (rn() < 0.8) {
document.write(rn() + "<br>")
}
if (rn() > 0.8) {
x = 100
}
x++
}
}
//
document.getElementById("11").innerHTML = writerandon()Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>exp</title>
</head>
<body id="bd">
<h1 id="11"></h1>
</body>
<script src="exp.js"></script>
</html>Run Code Online (Sandbox Code Playgroud)
您的代码进行两个随机数调用,每个调用可能具有不同的值。修复是用来else确保只有一个分支触发:
let n = Math.random();
if (n < 0.8) {
document.write(n + "<br>")
}
else {
x = 100
}
Run Code Online (Sandbox Code Playgroud)
仅仅因为您包装Math.random()在一个函数中并不意味着它只触发一次。每次调用rn()都会返回一个新值。a每次函数调用都会重新初始化局部变量。它不会在调用之间持续存在。
在您的原始代码中,大约 16% 的时间 (80% x 20%) 您会侥幸逃脱并触发两个分支。