J Doe Math
J Doe Math

Reputation: 31

Generating Two Numbers With a Specific Sum

I'm trying to generate two numbers with a specific sum. Here is my proposed method:

Edited: 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();

There's something wrong with the if ((random2 + x) = 0) line, as the code runs perfectly fine when it's removed. How can I modify this line so that the sum of the two numbers is 0? It would be most helpful if someone could modify the Jsfiddle that I've included. Thanks!

Upvotes: 0

Views: 91

Answers (3)

SamVK
SamVK

Reputation: 3405

Are you trying to make it only output a second number that, when added to the first, equals 0? Because it actually already does that - but only if it gets it on the first try (try hitting refresh at least 30 times.) You need to tell it to keep re-choosing (looping) the second random number while the sum isn't 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/


To take this one step further, if I'm reading this right (if not ignore this) it looks like you might want to eventually choose a random sum and have it determine the required second number to be added. To do this, we would replace the 0 in our "while" loop with 'sum'. And 'sum' would have to be defined as a random number with a "max=x+13" and "min=x-13" (otherwise the random number may be too high/low for random2 to ever reach, causing the browser to crash.) [Or just remove the limits from random2.]

http://jsfiddle.net/fkuo54hc/

Upvotes: 0

kmhigashioka
kmhigashioka

Reputation: 521

First, your GenerateRandomNumbers2 function returns undefined value other than in your if statement. So you need to return a value. I updated your fiddle and refactor some of your code.

Upvotes: 0

Sverri M. Olsen
Sverri M. Olsen

Reputation: 13283

This is invalid:

if ((random2 + x) = 0){

You cannot assign something to an expression.

You probably meant to use the comparison operator (==), like this:

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

Upvotes: 1

Related Questions