Search code examples
javascriptrandomvariable-assignmentassignment-operator

Randomly generate += or -= javascript


Hi i am trying to assign either += or -= to an object position. Firstly I have random math choosing a number:

var min = 9;
 var max = 11;
 var pos = Math.floor(Math.random() * (max - min + 1)) + min;

I am trying to add the out come of pos to this._target.position.z and this._target.position.x but I want it to be randomly either added or subtracted

so the random out come should be for the Z position should be either:

this._target.position.z += pos;

or

this._target.position.z -= pos;

and then for the X position should be either:

this._target.position.x += pos;

or

this._target.position.x -= pos;

thanks in advance.


Solution

  • If you want to randomly do x += value or x -= value you can simply use the first version, and then multiply your value by -1 if you want to do a -=.

    In other words:

    const isNegative = // however you determine this, eg. Math.random
    const newValue += (isNegative ? -1 : 1) * value;
    

    Or, to apply it back to your case, using @Chris G's suggestion in the comments:

     const oneOrNegativeOne = (Math.floor(Math.random() * 2) * 2 - 1);
     this._target.position.x += oneOrNegativeOne * pos;