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;
}
Answer from cre8 on Stack OverflowUpdate 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;
}
From Fakerjs github
Whole Number faker. random.number(min,max) Random number between 0 and "range".
faker.random.number(100); //returns 92
faker.random.number({min:5, max:10}); //returns 9
Decimal number faker. finance.amount(min,max,decimal places) Random number between "min" and "max" including decimals to X digits.
faker.finance.amount(9000,10000,4); //returns 9948.8363
Boolean faker. random.boolean()
faker.random.boolean(); //returns true
Array Element faker. random.arrayElement(array[]) Selects a random element from an array of possible values. This function is useful to create custom lists of possibilities.
faker.random.arrayElement(["one","two","three","four"]); //returns "two"
var phTyp = faker.random.arrayElement(["cell","work","home"]); //returns "work"
Object Element faker. random.objectElement(object{}) Selects a random element from an object, selects the value not the keys. This function is useful to create custom lists of possibilities.
faker.random.objectElement({one: 1, two: 2, three: 3}); //returns 3
You can try the following:
Faker::Number.between(from: 0.0, to: 1.0).round(2)
Source:
- Faker::Number.between docs.
Try:
rand.round(2)
rand generates a random number, round rounds it to the desired number of decimals. This might generate a number that has LESS than two decimal digits (e.g. 0.5).
If you want to enforce this you can format the random number to a String:
Kernel.format("%.2f", rand)
Where %f is the formating as float and %.2f is specific for two decimal digits.
You can actually ommit Kernel and just call format or use % like so:
"%.2f" % rand
(i prefer Kernel.format, seems more reeadable to me)
Now this poses another problem:
pattern = "%.2f"
Kernel.format(pattern, 0) # => "0.00"
Kernel.format(pattern, 0.9999999) # => "1.00"
because it gets rounded up when formatting the number is suddenly not smaller than 1. If by between you meant NOT INCLUDING 1 you will need to tweak it some more:
Kernel.format(pattern, 0.floor(2)) # => "0.00"
Kernel.format(pattern, 0.9999999.floor(2)) # => "0.99"