% 几率机制

% Chance mechanic

本文关键字:机制 几率      更新时间:2023-09-26
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateNumber() {
document.getElementById("generated-id").innerHTML = getRandomInt (1, 10);
}
function stickForStamina(){
if (stamina > 0 && generateNumber() <= 1) {
stamina = stamina - 1;
stick = stick + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
}
}
到目前为止,找到

物体的%机会的功能,即棍子我已经修复了这个问题中的一些问题,但在一天后仍在研究这个问题 xD

这似乎有效 更新了下面的 % 机会代码

function stickForStamina(){
var num = getRandomInt(1, 10);
if (stamina > 0 && num <= 10) {
stamina = stamina - 1;
stick = stick + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
}

除了现在我必须想办法让摇滚以 90% 的机会进入这里 9/10

function wildernessForStamina(){
var num = getRandomInt(1, 10);
if (stamina > 1 && num <= 9) {
stamina = stamina - 2;
stick = stick + 1;
rock = rock + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
document.getElementById("rock").innerHTML = rock;
}
else if (stamina > 1 && num <=10) {
stamina = stamina - 2;
stick = stick + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
}
}

想通了。关于如何更好地写这个的任何帮助?

function wildernessForStamina(){
var num = getRandomInt(1, 10);
if (stamina > 1 && num <= 9) {
stamina = stamina - 2;
stick = stick + 1;
rock = rock + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
document.getElementById("rock").innerHTML = rock;
}
else if (stamina > 1 && num <=10) {
stamina = stamina - 2;
stick = stick + 1;
document.getElementById("stamina").innerHTML = stamina;
document.getElementById("stick").innerHTML = stick;
}

}

这行得通。可能有一种方法可以缩短它,但我会继续其他项目,所以我不会停留在一件事上

您可以使用简单直接的方法仅使用 Math.random(( 方法进行机会计算。

如果你知道 Math.random(( 返回从 0(含(到 1(不含(的 nubmer,你可以这样计算你的几率:

如果你想在50%的情况下做点什么,那么你可以写:

if (Math.random() < 50/100f )
{
    // 50% = 50/100 = 0.5
    //do something
}

同样,如果你想在 0% 的情况下做某事 (0% = 0/100 = 0(,那么你可以写:

if (Math.random() < 0/100f )
{
    // this will never execute
    // minimum that random can return is 0 which can't be lower than 0/100 = 0
}

同样,如果你想在 100% 的情况下做某事 (100% = 100/100 = 1(,那么你可以写:

if (Math.random() < 100/100f )
{
    // this will allways execute
    // maximum that random can return is 0.9999999... which 
    // is always lower than 1
}

但是,还有其他一些情况,您可以使用此符号编写。

例如,如果你想做某事三到四次,可以这样写:

if (Math.random() < 3/4f )
{
    // 3/4 = 0.75
    // 3/4 = 3*25 / 4*25 = 75 / 100 
}

或者您希望每 2 次尝试发生一次 7 次尝试:

if (Math.random() < 2/7f )
{
   // you got it allready by now :)
}