gpt4 book ai didi

javascript - 如何让随机数等于javascript中的特定数字?

转载 作者:行者123 更新时间:2023-12-01 17:57:00 26 4
gpt4 key购买 nike

好的,所以我的问题是我有三个随机数生成器,我希望所有三个随机生成的数字(从 1-5 生成)的值加起来为 9。例如,我随机生成一个 4,一个3 和 2。再按一下按钮,5、3 和 1。我已经尝试了一段时间,但就是无法弄清楚。

        function statGen() {
var x = document.getElementById("number");
x.innerHTML = Math.floor((Math.random() * 5) + 1);
var a = document.getElementById("agl");
a.innerHTML = Math.floor((Math.random() * 4) + 1);
var l = document.getElementById("lck");
l.innerHTML = Math.floor((Math.random() * 3) + 1);
}
 <button id="statbutton" onclick="statGen()">Get Numbers</button>       
<p id="main">Main:</p>
<p id="number"></p>
<br/>
<p id="Agl">Agl:</p>
<p id="agl"></p>
<br/>
<p id="Lck">Lck:</p>
<p id="lck"></p>

我曾多次尝试循环运行它直到它是数字 9,但这些都不起作用。

最佳答案

到目前为止,所有答案都没有很好的随机性。通过选择第一个数字,然后是第二个,然后是第三个,你对极端有很大的偏见。

让我用一个骰子的例子来说明。假设您想掷三个骰子,它们的总和为 8。如果一次掷一个,则最终排列为 [6, 1, 1] 的概率为 1/6。那是因为在你掷出 6 之后(以 1/6 的概率),唯一可接受的剩余数字是 1 和 1。

实际上,[6, 1, 1] 还不到所有可接受掷骰数的 1/6。例如,从 3 开始给出 [3, 1, 4], [3, 2, 3], [3, 3, 2], [3, 4, 1]。因此,第一个数字为 3 的可能性是 6 的四倍。但其他这些方法并非如此!

所以有几种方法可以获得“良好”的随机性。最简单的实际上是只掷所有三个“骰子”,如果结果不符合您的限制,则将它们全部掷一遍。

function roll() {
return Math.floor(Math.random() * 5 + 1); //1-5 uniformly
}

function chooseNumbers() {
var x = 0, y = 0, z = 0;

while (x + y + z !== 9) {
x = roll();
y = roll();
z = roll();
}
return [x, y, z];
}

对于大多数用途来说,这将非常快,但您最终会扔掉相当数量的卷。另一种选择是枚举(使用代码或手动)您可能的所有排列,然后使用统一的随机数选择一个索引。

var permutations = [
[5, 3, 1],
[5, 2, 2],
[5, 1, 3],
[4, 4, 1],
//...
[1, 3, 5]
];

function chooseNumbers() {
return permutations[Math.floor(Math.random() * permutations.length)];
}

关于javascript - 如何让随机数等于javascript中的特定数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com