d3-random
从各种分布中生成随机数。有关种子随机数生成的更多信息,请参阅 random.source 和 randomLcg。
randomUniform(min, max)
d3.randomUniform(6) // generate numbers ≥0 and <6
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从 均匀分布。返回的数字的最小允许值为 min(包含),最大值为 max(不包含)。如果未指定 min,则默认值为 0;如果未指定 max,则默认值为 1。例如
randomInt(min, max)
d3.randomInt(100) // generate integers ≥0 and <100
示例 · 源代码 · 返回一个生成随机整数的函数,这些随机数服从 均匀分布。返回的数字的最小允许值为 ⌊min⌋(包含),最大值为 ⌊max - 1⌋(包含)。如果未指定 min,则默认值为 0。例如
randomNormal(mu, sigma)
d3.randomNormal(0, 1) // mean of 0, and standard deviation of 1
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从 正态(高斯)分布。生成的数字的期望值为 mu,标准差为 sigma。如果未指定 mu,则默认值为 0;如果未指定 sigma,则默认值为 1。
randomLogNormal(mu, sigma)
d3.randomLogNormal(0, 1)
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从 对数正态分布。随机变量自然对数的期望值为 mu,标准差为 sigma。如果未指定 mu,则默认值为 0;如果未指定 sigma,则默认值为 1。
randomBates(n)
d3.randomBates(3) // generates numbers between 0 and 1
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从具有 n 个独立变量的 Bates 分布。分数 n 的情况与 d3.randomIrwinHall 一样处理,d3.randomBates(0) 等效于 d3.randomUniform()。
randomIrwinHall(n)
d3.randomIrwinHall(3) // generates numbers between 0 and 3
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从具有 n 个独立变量的 Irwin–Hall 分布。如果 n 的小数部分非零,则将其视为将该小数部分乘以 d3.randomUniform() 添加到整数部分。
randomExponential(lambda)
d3.randomExponential(1 / 40)
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从速率为 lambda 的 指数分布;等效于 泊松过程中事件之间的时间,平均值为 1 / lambda。例如,randomExponential(1 / 40) 生成事件之间的时间,平均而言,每 40 个时间单位发生一个事件。
randomPareto(alpha)
d3.randomPareto(6)
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从形状为 alpha 的 帕累托分布。值 alpha 必须为正值。
randomBernoulli(p)
d3.randomBernoulli(0.5)
示例 · 源代码 · 返回一个生成 1 或 0 的函数,根据成功概率为 p 的 伯努利分布,返回 1,失败概率为 q = 1 - p,返回 0。值 p 在 [0, 1] 范围内。
randomGeometric(p)
d3.randomGeometric(0.1)
示例 · 源代码 · 返回一个生成服从成功概率为 p 的 几何分布的数字的函数。值 p 在 [0, 1] 范围内。
randomBinomial(n, p)
d3.randomBinomial(40, 0.5)
示例 · 源代码 · 返回一个生成服从具有 n 次试验和每次试验成功概率为 p 的 二项分布的随机数的函数。值 n 大于或等于 0,值 p 在 [0, 1] 范围内。
randomGamma(k, theta)
d3.randomGamma(2, 1)
示例 · 源代码 · 返回一个生成服从形状参数为 k、尺度参数为 theta 的 伽马分布的随机数的函数。值 k 必须为正值;如果未指定 theta,则默认值为 1。
randomBeta(alpha, beta)
d3.randomBeta(3, 1.5)
示例 · 源代码 · 返回一个生成服从形状参数为 alpha 和 beta 的 贝塔分布的随机数的函数,这两个参数都必须为正值。
randomWeibull(k, a, b)
d3.randomWeibull(10)
示例 · 源代码 · 返回一个生成随机数的函数,这些随机数服从 广义极值分布之一,取决于 k
- 如果 k 为正,则为形状参数为 k 的 韦伯分布
- 如果 k 为零,则为 Gumbel 分布
- 如果 k 为负,则为形状参数为 −k 的 Fréchet 分布
在这三种情况下,a 为位置参数,b 为尺度参数。如果未指定 a,则默认值为 0;如果未指定 b,则默认值为 1。
randomCauchy(a, b)
d3.randomCauchy(0, 1) // above, clipped to [-5, 5] because “fat tails”
示例 · 源代码 · 返回一个生成具有 柯西分布 的随机数的函数。a 和 b 与 d3.randomWeibull 中的含义和默认值相同。
randomLogistic(a, b)
d3.randomLogistic(0, 1)
示例 · 源代码 · 返回一个生成具有 逻辑斯蒂分布 的随机数的函数。a 和 b 与 d3.randomWeibull 中的含义和默认值相同。
randomPoisson(lambda)
d3.randomPoisson(400)
示例 · 源代码 · 返回一个生成具有平均值为 lambda 的 泊松分布 的随机数的函数。
random.source(source)
const seed = 0.44871573888282423; // any number in [0, 1)
const random = d3.randomNormal.source(d3.randomLcg(seed))(0, 1);
random(); // -0.6253955998897069
示例 · 返回相同类型的生成随机数的函数,但使用给定的随机数生成器 source 作为随机性的来源,而不是 Math.random。给定的随机数生成器必须实现与 Math.random 相同的接口,并且只返回 [0, 1) 范围内的值。这在需要使用种子随机数生成器而不是 Math.random 时很有用。
randomLcg(seed)
d3.randomLcg(42)
示例 · 源代码 · 返回一个 线性同余生成器;此函数可以重复调用以获取在 [0,1) 区间内分布良好的伪随机值,并且具有较长的周期(最多 10 亿个数字),类似于 Math.random。可以指定一个 seed 作为 [0,1) 区间内的实数,或者任何整数。在后一种情况下,只考虑低 32 位。用相同种子实例化的两个生成器会生成相同的序列,允许创建可重复的伪随机实验。如果未指定 seed,则使用 Math.random 选择一个。