简介
seedable-random 是一个可在前端使用的 npm 包,用于生成由种子确定的随机数。在前端开发中,需要使用随机数来模拟数据、生成唯一值等场景,而 seedable-random 可以提供一种简单而可靠的方法。
安装
在命令行中输入以下命令安装 seedable-random:
npm i seedable-random
使用
基本用法
使用 seedable-random 非常简单:
const seedableRandom = require('seedable-random'); const seed = 12345; const random = seedableRandom(seed); console.log(random()); // 0.37614680450223457 console.log(random()); // 0.9730467990838589 console.log(random()); // 0.770749773579091
在以上示例中,我们首先导入了 seedable-random,然后使用一个数值 12345 初始化了一个“随机数生成器”,接着连续调用了三次该生成器的方法,每次输出一个 0 到 1 之间的随机数。
在同一个种子下,seedable-random 生成的随机数是有规律的,即使我们在不同的时间点调用同一个种子下的生成器,生成的随机数仍然相同。
生成不同分布的随机数
seedable-random 提供了多种生成随机数的方法,我们可以根据需要选择不同的方法来获取特定分布的随机数,例如:
- 生成符合正态分布的随机数
const normal = seedableRandom.normal(seed, mean, standardDeviation); console.log(normal()); // -0.571061633813725 console.log(normal()); // -1.1662085730077543 console.log(normal()); // 0.2826112511942592
在上面的示例中,我们使用了 normal 方法来生成符合正态分布的随机数。该方法接受三个参数,分别代表种子、均值和标准差。
- 生成符合泊松分布的随机数
const poisson = seedableRandom.poisson(seed, lambda); console.log(poisson()); // 0 console.log(poisson()); // 2 console.log(poisson()); // 1
在上面的示例中,我们使用了 poisson 方法来生成符合泊松分布的随机数。该方法接受两个参数,分别代表种子和参数 lambda。
更多可用的方法,可以查看 seedable-random 的源代码文档。
使用示例
我们可以通过一个具体的场景示例来演示 seedable-random 的用法:
假设我们需要模拟一批某个国家的 10 岁至 70 岁人口的收入情况,我们可以按照以下步骤进行:
-- -------------------- ---- ------- ----- -------------- - --------------------------- ----- ---- - ------ ----- ------ - --------------------- ----- ------- - ------------ ------- -- -- --- ------ -- ----- - ---- ----- ---------- - ----------------- -- - --- ----- --- ------------------ -- ---- - --- - ---- - ----- ----------------- - ---- - ---- -- ---- - --- - ---- - ----- ----------------- - ---- - ---- -- ---- - --- - ---- - ----- ----------------- - ----- - ---- - ---- - ----- ----------------- - ---- - ----- ------ - -------------------------- - ---- ----- --------------------- ------ ---------------- --- --- --------------------- ------------------------
在上面的示例中,我们首先导入了 seedable-random,并使用一个数值 12345 初始化了一个“随机数生成器”。接着我们生成了从 10 岁至 70 岁的年龄列表,对于每个年龄,我们根据其所在年龄段的平均收入和标准差,使用 seedableRandom 的 normal 方法生成一个符合正态分布的收入随机数,并将其添加到收入列表中。最后打印出生成的年龄和收入列表。
在这个示例中,我们利用了 seedable-random 提供的正态分布生成器,以及 JS 的 Array.from 和 Array.map 方法,快速生成了需要的数据。通过修改给定的参数,我们可以方便地调整生成的数据分布,从而得到不同的模拟数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6d45c4a9b7065299ccb971