跳到內容

d3-random

從各種分佈中產生隨機數。對於種子隨機數產生,請參閱 random.sourcerandomLcg

randomUniform(min, max)

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

範例 · 原始碼 · 傳回一個用於產生具有 均勻分佈 的隨機數的函式。傳回數字的最小允許值為 min(包含),最大值為 max(不包含)。如果未指定 min,則預設為 0;如果未指定 max,則預設為 1。例如

randomInt(min, max)

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

範例 · 原始碼 · 傳回一個用於產生具有 均勻分佈 的隨機整數的函式。傳回數字的最小允許值為 ⌊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 個獨立變數。處理部分 n 的情況與 d3.randomIrwinHall 相同,而 d3.randomBates(0) 等於 d3.randomUniform()。

randomIrwinHall(n)

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

範例 · 原始碼 · 傳回一個函式,用於產生具有 歐文-霍爾分布 的亂數,其中有 n 個獨立變數。如果 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,其中 1 的傳回機率為成功機率 p,而 0 的傳回機率為失敗機率 q = 1 - pp 的值介於 [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。

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

範例 · 傳回用於產生隨機數字的相同類型函式,但使用指定的隨機數字產生器 source 作為隨機性的來源,而不是 Math.random。指定的隨機數字產生器必須實作與 Math.random 相同的介面,且只傳回 [0, 1) 範圍內的數值。當需要使用種子隨機數字產生器,而非 Math.random 時,這項功能會很有用。

randomLcg(seed)

js
d3.randomLcg(42)

範例 · 原始碼 · 傳回一個 線性同餘產生器;此函式可以重複呼叫,以取得在 [0,1) 區間中分佈良好且具有長週期(最多 10 億個數字)的偽隨機值,類似於 Math.random。種子可以指定為 [0,1) 區間內的實數或任何整數。在後一種情況下,只會考慮較低 32 位元。使用相同種子實例化的兩個產生器會產生相同的序列,允許建立可重製的偽隨機實驗。如果未指定 種子,則會使用 Math.random 選擇一個。