【问题标题】:Generate random equations with random numbers [closed]用随机数生成随机方程[关闭]
【发布时间】:2016-09-02 02:51:34
【问题描述】:

我想在 JavaScriptp 中生成随机方程,然后将它们输出到 HTML 标记中。 这是代码:

<!DOCTYPE html>
<body>

<p>Click the button below to generate a random equation.</p>

<button onclick="change();">Generate</button>

<p id="generate"></p>

<script>
function getRandomizer(bottom, top) {
    return function() {
        return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
    }
}

function getRandomNumber(results) {
    var rollDie = getRandomizer( 1, 10 );
    for ( var i = 0; i < 3; i++ ) {
         results += rollDie() + "";
    }
    getRandomNumber.result = results;
}

function getRandomEquation(num1, num2, num3, num4, num5, num6, num7, output) {
    var num_7,
        num_6,
        num_5,
        num_4,
        num_3,
        num_2,
        num_1
     getRandomNumber(num1).result = num_7;
     getRandomNumber(num2).result = num_6;
     getRandomNumber(num3).result = num_5;
     getRandomNumber(num4).result = num_4;
     getRandomNumber(num5).result = num_3;
     getRandomNumber(num6).result = num_2;
     getRandomNumber(num7).result = num_1;

     var equation1 = "" + num_1 + " x " + num_2 + " + {" + num_3 + " x [(" + num_4 + " x " + num_5 + ") - " + num_6 + "] + " + num_7 + "} = x",
         equation2 = "" + num_1 + " x " + num_2 + " = y",
         equation3 = "" + num_1 + "s x " + num_2 + " = z, s = " + num_3,
         equation4 = "" + num_1 + " + {" + num_2 + " x [" + num_3 + " + (" + num_4 + " x " + num_5 + ") + " + num_6 + "] + " + num_7 + "} = x",
         equation5 = "" + num_1 + "e + " + num_2 + "l x " + num_3 + " + " + num_4 + "a, e = " + num_5 + ", l = " + num_6 + ", a = " + num_7,
         equation6 = "[" + num_1 + " x " + num_2 + "z] + {" + num_3 + " - " + num_4 + "} + (" + num_5 + " + " + num_6 + ") = e, z = " + num_7,
         equation7 = "p" + " x " + num_1 + " / " + num_2 + " - " + num_3 + " + " + num_4 + " = e, p = " + num_5
    var values = [
         // there is an easier way to do this, too lazy
         "" + equation1,
         "" + equation2,
         "" + equation3,
         "" + equation4,
         "" + equation5,
         "" + equation6,
         "" + equation7
    ]
    var i = 0;
    var e;
    if (i > values.length) {
         i = 0;
    }
    var randomEquation = values[i];
    i++;
    e = values[i];


    this.output = randomEquation;
    this.e = e;
}

function getEquation() {
    var bl1,
        bl2,
        bl3,
        bl4,
        bl5,
        bl6,
        bl7,
        equationOutput;

        var eq = getRandomEquation(bl1, bl2, bl3, bl4, bl5, bl6, bl7, equationOutput).e;

        getEquation.equation = eq;
    }
    function change() {
        var final = getEquation().equation;
        document.getElementById("generate").innerHTML = final;
    }
</script>

</body>
</html>

但它不起作用。有什么帮助吗?

附:我的老师给我分配了这个。请尽快回复。谢谢。

【问题讨论】:

    标签: javascript html random


    【解决方案1】:

    这段代码完全是一团糟。我不知道它来自哪里,但绝对不是 Javascript。 请尝试以下方法:

    <!DOCTYPE html>
    <body>
    
    <p>Click the button below to generate a random equation.</p>
    
    <button onclick="change();">Generate</button>
    
    <p id="generate"></p>
    
    <script>
    function getRandomizer(bottom, top) {
        return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
    }
    
    function getRandomNumber() {
        var results="";
        for ( var i = 0; i < 3; i++ ) {
             results += getRandomizer( 1, 10 );
        }
        return results;
    }
    
    function getRandomEquation() {
        var num_7 = getRandomNumber(),
            num_6 = getRandomNumber(),
            num_5 = getRandomNumber(),
            num_4 = getRandomNumber(),
            num_3 = getRandomNumber(),
            num_2 = getRandomNumber(),
            num_1 = getRandomNumber();
    
        var equation1 = num_1+" x "+num_2+" + {"+num_3+" x [("+num_4+" x "+num_5+") - "+num_6+"] + "+num_7+"} = x",
            equation2 = num_1+" x "+num_2+" = y",
            equation3 = num_1+"s x "+num_2+" = z, s = "+num_3,
            equation4 = num_1+" + {" +num_2+ " x [" +num_3+" + ("+num_4+" x "+num_5+") + "+num_6+"] + "+num_7+"} = x",
            equation5 = num_1+"e + "+num_2+"l x "+num_3+" + "+num_4+"a, e = "+num_5+", l = "+num_6+", a = "+ num_7,
            equation6 = "["+num_1+" x "+num_2+ "z] + {"+num_3+" - "+num_4+"} + ("+num_5+" + "+num_6+") = e, z = "+ num_7,
            equation7 = "p x "+num_1+" / "+num_2+" - "+num_3+" + "+num_4+" = e, p = "+num_5
        var randomEquation = [
             equation1,
             equation2,
             equation3,
             equation4,
             equation5,
             equation6,
             equation7
        ]
    
    
        return randomEquation.join("<br>");
    }
    
    function change() {
        document.getElementById("generate").innerHTML = getRandomEquation();
    }
    </script>
    
    </body>
    </html>
    

    【讨论】:

    • 谢谢,但我只希望它显示一个方程式,我该怎么做?
    • 依赖于“函数getRandomEquation”最后一行“return randomEquation[equation number];”中方程类型的变化
    • 但我希望它选择一个随机方程,所以我会放一个 0-7 之间的随机数,而不是方程编号,对吗?但是那我如何从 0-7 中选择一个随机数呢?
    • 返回随机方程[getRandomizer(1, 7)];仍然很丑,但应该可以工作
    【解决方案2】:

    好吧,你可以这样做:

    var type = (Math.floor(Math.random(4));
    var ret = 0;
    var n = [(Math.floor(Math.random(100)), (Math.floor(Math.random(100))];
    if (type == 0) ret = n[0] + n[1]
    else if (type == 1) ret = Math.abs(n[0] - n[1])
    else if (type == 2) ret = n[0] * n[1];
    else if (type == 3) ret = n[0] / n[1]
    else ret = n[0] / 5 % n[1]
    // do something with ret
    

    它是完全可扩展的,只需编辑 nif 语句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      相关资源
      最近更新 更多