生成具有特定和的两个数字

时间:2016-03-12 23:49:27

标签: javascript jquery random

我试图生成具有特定总和的两个数字。这是我提出的方法:

已编辑:http://jsfiddle.net/KDmwn/274/

$(document).ready(function () {
    function GenerateRandomNumber() {
        var min = -13, max = 13;
        var random = Math.floor(Math.random() * (max - min + 1)) + min;   
        return random;
    }

    var x = GenerateRandomNumber(); 

    function GenerateRandomNumber2() {
        var min2 = -13, max2 = 13;
        var random2 = Math.floor(Math.random() * (max2 - min2 + 1)) + min2;   
        if ((random2 + x) == 0){
            return random2};
    }

var xx = GenerateRandomNumber2();

if ((random2 + x) = 0)行出了问题,因为代码在删除后运行得非常好。如何修改此行以使两个数字之和为0?如果有人可以修改我所包含的Jsfiddle,那将是最有帮助的。谢谢!

3 个答案:

答案 0 :(得分:1)

这是无效的:

if ((random2 + x) = 0){

您无法为表达式指定内容。

您可能打算使用比较运算符(==),如下所示:

if ((random2 + x) == 0){

答案 1 :(得分:0)

首先,您的GenerateRandomNumbers2函数返回if语句以外的未定义值。所以你需要返回一个值。我更新了您的fiddle并重构了一些代码。

答案 2 :(得分:0)

您是否尝试将输出第二个数字,当添加到第一个数字时,等于0?因为它实际上已经这样做 - 但只有在第一次尝试时才尝试(尝试至少刷新30次。)你需要告诉它继续重新选择(循环)第二个随机数,而总和不是0:

function GenerateRandomNumber2() {
    var min2 = -13,
        max2 = 13;
    var random2;
    while ((random2 + x) !== 0) {
        random2 = Math.floor(Math.random() * (max2 - min2 + 1)) + min2;
    }
    return random2;
}

http://jsfiddle.net/vL77hjp0/

为了更进一步,如果我正确地阅读(如果不是忽略这一点),看起来你可能最终会选择一个随机总和并让它确定所需的第二个数字待补充。为此,我们将在'while'循环中用'sum'替换0。并且'sum'必须被定义为具有“max = x + 13”和“min = x-13”的随机数(否则随机数可能太高/低于random2到永远到达,导致浏览器崩溃。)[或者只是删除random2的限制。]

http://jsfiddle.net/fkuo54hc/