Faker.js 2 个值之间的随机数

问题描述 投票:0回答:6

这个让我有点生气,我确信它很简单,但似乎没有在任何地方记录。

我使用 Faker.js 和以下内容来生成我的随机数:

faker.random.number();

效果很好,现在如果我想在 2 个数字之间进行操作,我该怎么做?

我尝试了以下方法:

faker.random.number(10, 50);

但是,这只是给了我从

0
10
的数字。不知道
50
在做什么。

任何人都可以给我一些指示吗?

javascript faker
6个回答
122
投票

更新 2023 年 v8

现在移至https://github.com/faker-js/faker,他们又改了:

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

来源:https://fakerjs.dev/api/number.html#int

2021 年更新

最新版本将函数位置从

faker.random.number
更改为
faker.datatype.number
https://github.com/Marak/faker.js/issues/1156

原答案

你需要给函数一个对象:

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

因此,如果您只传递一个数字,它会将其设置为最大值。默认最小值为 0。

这是数字函数的实现:

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;

  }

42
投票

来自Fakerjs github

整数造假者。random.number(min,max)0 和“范围”之间的随机数。

faker.random.number(100); //returns 92
faker.random.number({min:5, max:10}); //returns 9

小数造假者。finance.amount(min,max,小数位数)“min”和“max”之间的随机数,包括小数到 X 位。

faker.finance.amount(9000,10000,4); //returns 9948.8363

布尔伪造者。 random.boolean()

faker.random.boolean(); //returns true

数组元素伪造者。random.arrayElement(array[])从可能值的数组中选择一个随机元素。此功能对于创建自定义可能性列表非常有用。

faker.random.arrayElement(["one","two","three","four"]); //returns "two"
var phTyp = faker.random.arrayElement(["cell","work","home"]); //returns "work"

对象元素伪造者。random.objectElement(object{})从对象中选择随机元素,选择值而不是键。此功能对于创建自定义可能性列表非常有用。

faker.random.objectElement({one: 1, two: 2, three: 3}); //returns 3

11
投票

我在使用

faker.random.number
在应用程序中运行
[email protected]
函数时遇到警告。

弃用警告:faker.random.number 现在位于 faker.datatype.number

方法已移动。更好的解决方法是将其替换为

faker.datatype.number()

faker.datatype.number(100); // return 88
faker.datatype.number({ min: 5, max: 10 }); // return 7

3
投票

尝试传递如下的哈希值

faker.random.number({ min: 10, max: 50})

0
投票

我的解决方案是使用这个库: https://github.com/faker-js/faker

除此之外,它还创建了它需要但库当前不支持的这些方法。

export function getCreditCardBrand(): string {
  const brands = [
    'Visa',
    'MasterCard',
    'American Express',
    'Discover',
    'JCB',
    'Diners Club',
  ];
  const randomIndex = Math.floor(Math.random() * brands.length);
  return brands[randomIndex];
}

export function getBoolean(): boolean {
  const booleans = [true, false];
  const randomIndex = Math.floor(Math.random() * booleans.length);
  return booleans[randomIndex];
}

export function getRandomElement<T>(items: T[]): T {
  return items[Math.floor(Math.random() * items.length)];
}

interface NumberRange {
  min: number;
  max: number;
}

export function getRandomNumber(range: NumberRange): number {
  return Math.floor(Math.random() * (range.max - range.min + 1)) + range.min;
}

0
投票

在较新的版本(8.4.1,2024 年 8 月)中,

faker.random
已弃用。您需要使用:

faker.helpers.rangeToNumber({min: 10, max: 50})}
© www.soinside.com 2019 - 2024. All rights reserved.