Skip to content

d3-random

从各种分布中生成随机数。有关有种子随机数生成,请参见 random.sourcerandomLcg

🌐 Generate random numbers from various distributions. For seeded random number generation, see random.source and randomLcg.

randomUniform(最小值, 最大值)

🌐 randomUniform(min, max)

0123456
js
d3.randomUniform(6) // generate numbers ≥0 and <6

示例 · 来源 · 返回一个用于生成具有[均匀分布](https://en.wikipedia.org/wiki/Uniform_distribution_\(continuous\)的随机数的函数。返回数字的最小允许值为 min(包含),最大值为 max(不包含)。如果未指定 min,则默认为 0;如果未指定 max,则默认为 1。例如:

randomInt(最小值, 最大值)

🌐 randomInt(min, max)

0102030405060708090100
js
d3.randomInt(100) // generate integers ≥0 and <100

示例 · 来源 · 返回一个用于生成具有[均匀分布](https://en.wikipedia.org/wiki/Uniform_distribution_\(continuous\)的随机整数的函数。返回数字的最小允许值是min⌋(包含),最大值是 ⌊max - 1⌋(包含)。如果未指定 min,则默认值为 0。例如:

randomNormal(mu, sigma)

js
d3.randomNormal(0, 1) // mean of 0, and standard deviation of 1

示例 · 来源 · 返回一个用于生成具有正态(高斯)分布的随机数的函数。生成数的期望值为mu,标准差为sigma。如果未指定mu,默认为0;如果未指定sigma,默认为1。

randomLogNormal(mu, sigma)

js
d3.randomLogNormal(0, 1)

示例 · 来源 · 返回一个用于生成具有对数正态分布的随机数的函数。随机变量自然对数的期望值为 mu,标准差为 sigma。如果未指定 mu,默认为 0;如果未指定 sigma,默认为 1。

randomBates(n)

js
d3.randomBates(3) // generates numbers between 0 and 1

示例 · 来源 · 返回一个用于生成具有 n 个独立变量的 Bates 分布 的随机数的函数。分数 n 的情况处理方式与 d3.randomIrwinHall 相同,并且 d3.randomBates(0) 等同于 d3.randomUniform()。

randomIrwinHall(n)

js
d3.randomIrwinHall(3) // generates numbers between 0 and 3

示例 · 来源 · 返回一个用于生成具有 n 个独立变量的 Irwin–Hall 分布 的随机数的函数。如果 n 的小数部分非零,则将其视为向整数部分添加 d3.randomUniform() 乘以该小数部分。

randomExponential(lambda)

js
d3.randomExponential(1 / 40)

示例 · 来源 · 返回一个用于生成具有指数分布的随机数的函数,参数为速率 lambda;等同于泊松过程中事件之间的时间,其平均值为 1 / lambda。例如,randomExponential(1 / 40) 生成事件之间的随机时间,其中平均每 40 个时间单位发生一次事件。

randomPareto(alpha)

js
d3.randomPareto(6)

示例 · 来源 · 返回用于生成具有形状参数 alpha帕累托分布 随机数的函数。值 alpha 必须为正值。

randomBernoulli(p)

js
d3.randomBernoulli(0.5)

示例 · 来源 · 返回一个函数,用于根据 伯努利分布 生成 1 或 0,其中以成功概率 p 返回 1,以失败概率 q = 1 - p 返回 0。值 p 的范围是 [0, 1]。

randomGeometric(p)

js
d3.randomGeometric(0.1)

示例 · 来源 · 返回一个用于生成具有成功概率 p几何分布 数字的函数。值 p 的范围是 [0, 1]。

randomBinomial(n, p)

js
d3.randomBinomial(40, 0.5)

示例 · 来源 · 返回一个用于生成具有 二项分布 的随机数的函数,其中 n 为试验次数,p 为每次试验成功的概率。值 n 大于或等于 0,值 p 在 [0, 1] 范围内。

randomGamma(k, theta)

js
d3.randomGamma(2, 1)

示例 · 来源 · 返回一个用于生成具有伽马分布的随机数的函数,其中 k 是形状参数,theta 是尺度参数。值 k 必须为正值;如果未指定 theta,默认为1。

randomBeta(alpha, beta)

js
d3.randomBeta(3, 1.5)

示例 · 来源 · 返回一个用于生成具有 alphabeta 形状参数的 贝塔分布 随机数的函数,这两个参数都必须为正数。

randomWeibull(k, a, b)

js
d3.randomWeibull(10)

示例 · 来源 · 根据 k,返回用于生成具有某个广义极值分布的随机数的函数:

在所有三种情况下,a 是位置参数,b 是尺度参数。如果未指定 a,默认为 0;如果未指定 b,默认为 1。

🌐 In all three cases, a is the location parameter and b is the scale parameter. If a is not specified, it defaults to 0; if b is not specified, it defaults to 1.

randomCauchy(a, b)

js
d3.randomCauchy(0, 1) // above, clipped to [-5, 5] because “fat tails”

示例 · 来源 · 返回一个用于生成具有 柯西分布 的随机数的函数。ab 的含义及默认值与 d3.randomWeibull 中相同。

randomLogistic(a, b)

js
d3.randomLogistic(0, 1)

示例 · 来源 · 返回一个用于生成具有逻辑分布的随机数的函数。ab 的含义和默认值与 d3.randomWeibull 中相同。

randomPoisson(lambda)

js
d3.randomPoisson(400)

示例 · 来源 · 返回一个用于生成具有平均值 lambda泊松分布 随机数的函数。

random.source(source)

js
const seed = 0.44871573888282423; // any number in [0, 1)
const random = d3.randomNormal.source(d3.randomLcg(seed))(0, 1);
random(); // -0.6253955998897069

示例 · 返回用于生成随机数的相同类型的函数,但使用给定的随机数生成器作为随机性的来源,而不是 Math.random。给定的随机数生成器必须实现与 Math.random 相同的接口,并且只返回范围在 [0, 1) 之间的值。当需要一个可设定种子的随机数生成器而不是 Math.random 时,这非常有用。

randomLcg(seed)

js
d3.randomLcg(42)

示例 · 来源 · 返回一个线性同余生成器;此函数可以重复调用以获取在区间 [0,1) 上分布良好的伪随机值,并具有很长的周期(最长可达 10 亿个数),类似于 Math.random。可以将 种子 指定为区间 [0,1) 内的实数或任意整数。在后一种情况下,仅考虑低 32 位。使用相同种子实例化的两个生成器会生成相同的序列,从而可以创建可重复的伪随机实验。如果未指定 种子,则使用 Math.random 选择一个种子。