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 個獨立變數。處理部分 n 的情況與 d3.randomIrwinHall 相同,而 d3.randomBates(0) 等於 d3.randomUniform()。
randomIrwinHall(n)
d3.randomIrwinHall(3) // generates numbers between 0 and 3
範例 · 原始碼 · 傳回一個函式,用於產生具有 歐文-霍爾分布 的亂數,其中有 n 個獨立變數。如果 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,其中 1 的傳回機率為成功機率 p,而 0 的傳回機率為失敗機率 q = 1 - p。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而定。
在所有這三種情況下,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。種子可以指定為 [0,1) 區間內的實數或任何整數。在後一種情況下,只會考慮較低 32 位元。使用相同種子實例化的兩個產生器會產生相同的序列,允許建立可重製的偽隨機實驗。如果未指定 種子,則會使用 Math.random 選擇一個。