コンテンツへスキップ

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の小数部分が0でない場合、整数部分にd3.randomUniform()にその小数部分を掛けた値を加算します。

randomExponential(lambda)

js
d3.randomExponential(1 / 40)

· ソースコード · レートlambdaを持つ指数分布に従う乱数を生成する関数を返します。これは、平均1 / lambdaポアソン過程におけるイベント間の時間に相当します。例えば、randomExponential(1 / 40)は、平均して40単位の時間ごとに1つのイベントが発生する、イベント間のランダムな時間を生成します。

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に応じて、一般化極値分布のいずれか1つに従う乱数を生成する関数を返します。

3つのケースすべてにおいて、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

· 乱数を生成する同種の関数を返しますが、Math.randomの代わりに、指定された乱数生成器sourceが乱数のソースとして使用されます。指定された乱数生成器はMath.randomと同じインターフェースを実装し、[0, 1)の範囲の値のみを返す必要があります。これは、Math.randomよりもシード付きの乱数生成器が望ましい場合に役立ちます。

randomLcg(seed)

js
d3.randomLcg(42)

· ソースコード · 線形合同法による乱数生成器を返します。この関数は繰り返し呼び出して、[0,1)の区間で均一に分布し、長い周期(最大10億個の数)を持つ擬似乱数値を取得できます。これはMath.randomに似ています。seedは[0,1)の実数、または任意の整数として指定できます。後者の場合、下位32ビットのみが考慮されます。同じseedでインスタンス化された2つのジェネレータは同じシーケンスを生成するため、再現可能な擬似乱数実験を作成できます。seedが指定されていない場合、Math.randomを使用して選択されます。