Search code examples
javascriptfaker

Faker.js random number between 2 values


This one is driving me a little mad, I'm sure it's simple but it doesn't seem to be documented anywhere.

Im using Faker.js and the following to generate my random number:

faker.random.number();

Works great, now if I want to do it between 2 numbers, how would I go about this?

I tried the following:

faker.random.number(10, 50);

However, that just gives me numbers from 0 to 10. No idea what the 50 is doing.

Can anyone give me some directions to this please.


Solution

  • Update 2023 for v8

    Now moved to https://github.com/faker-js/faker, they changed it again:

    faker.number.int(options: number | {
      max: number,
      min: number
    } = {}): number
    faker.number.int() // 2900970162509863
    faker.number.int(100) // 52
    faker.number.int({ min: 1000000 }) // 2900970162509863
    faker.number.int({ max: 100 }) // 42
    faker.number.int({ min: 10, max: 100 }) // 57
    

    source: https://fakerjs.dev/api/number.html#int

    Update 2021

    Latest versions changed location of the function from faker.random.number to faker.datatype.number, https://github.com/Marak/faker.js/issues/1156

    Original answer

    You need to give an object to the function:

    faker.datatype.number({
        'min': 10,
        'max': 50
    });
    

    So if you just pass a number, it will set it as the max value. The min value is 0 by default.

    This is the implementation of the number function :

    this.number = function (options) {
    
        if (typeof options === "number") {
          options = {
            max: options
          };
        }
    
        options = options || {};
    
        if (typeof options.min === "undefined") {
          options.min = 0;
        }
    
        if (typeof options.max === "undefined") {
          options.max = 99999;
        }
        if (typeof options.precision === "undefined") {
          options.precision = 1;
        }
    
        // Make the range inclusive of the max value
        var max = options.max;
        if (max >= 0) {
          max += options.precision;
        }
    
        var randomNumber = options.precision * Math.floor(
          mersenne.rand(max / options.precision, options.min / options.precision));
    
        return randomNumber;
    
      }