显示随机数 < 0.8 不能正常工作

1 javascript

嗨,我对 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)

tad*_*man 6

您的代码进行两个随机数调用,每个调用可能具有不同的值。修复是用来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%) 您会侥幸逃脱并触发两个分支。