p-random
random モジュールは乱数生成、確率分布、シーケンスユーティリティを提供します。
use p-random as rrandom[]
Section titled “random[]”[0, 1] の範囲の浮動小数点数を返します。
use p-random as rconst x be r.random[] -- 例: 0.7312...randint[a; b]
Section titled “randint[a; b]”a から b(両端を含む)のランダムな整数を返します。
use p-random as rr.randint[1; 6] -- 例: 4(サイコロ)randrange[stop] / randrange[start; stop] / randrange[start; stop; step]
Section titled “randrange[stop] / randrange[start; stop] / randrange[start; stop; step]”範囲からランダムな整数を返します。引数1つの場合は [0, stop)、2つの場合は [start, stop)、3つの場合は start, start+step, start+2*step, ... のうち stop 未満のランダムな値。
use p-random as rr.randrange[10] -- 0..9r.randrange[5; 10] -- 5..9r.randrange[0; 20; 2] -- 偶数 0..18randbool[] / randbool[p]
Section titled “randbool[] / randbool[p]”確率 p で true を返します(デフォルト: 0.5)。
use p-random as rr.randbool[] -- 50% truer.randbool[0.8] -- 80% truegetrandbits[k]
Section titled “getrandbits[k]”k ビットのランダムな整数を返します。
use p-random as rr.getrandbits[8] -- 0..255r.getrandbits[16] -- 0..65535randbytes[n]
Section titled “randbytes[n]”n 個のランダムなバイト(0〜255)の配列を返します。
use p-random as rr.randbytes[4] -- 例: [142, 55, 200, 13]normalvariate[mu; sigma]
Section titled “normalvariate[mu; sigma]”gauss のエイリアス。正規分布からランダムな数値を返します。
uniform[a; b]
Section titled “uniform[a; b]”[a, b) の範囲のランダムな浮動小数点数を返します。
use p-random as rr.uniform[1.0; 5.0] -- 例: 3.271...triangular[lo; hi; mode]
Section titled “triangular[lo; hi; mode]”三角分布からランダムな数値を返します。すべてのパラメータはオプション(デフォルト: lo=0, hi=1, mode=中間点)。
gauss[mu; sigma]
Section titled “gauss[mu; sigma]”平均 mu、標準偏差 sigma のガウス(正規)分布からランダムな数値を返します。両方ともオプション(デフォルト: mu=0, sigma=1)。
use p-random as rr.gauss[0; 1] -- 標準正規分布r.gauss[100; 15] -- IQ的な分布expovariate[lambd]
Section titled “expovariate[lambd]”レート lambd の指数分布からランダムな数値を返します。
gammavariate[alpha; beta]
Section titled “gammavariate[alpha; beta]”ガンマ分布からランダムな数値を返します。
betavariate[alpha; beta]
Section titled “betavariate[alpha; beta]”[0, 1] のベータ分布からランダムな数値を返します。
lognormvariate[mu; sigma]
Section titled “lognormvariate[mu; sigma]”対数正規分布からランダムな数値を返します。
vonmisesvariate[mu; kappa]
Section titled “vonmisesvariate[mu; kappa]”フォン・ミーゼス分布(円周正規分布)からランダムな角度を返します。mu は平均角度(ラジアン)、kappa は集中度パラメータ。
paretovariate[alpha]
Section titled “paretovariate[alpha]”パレート分布からランダムな数値を返します。
weibullvariate[alpha; beta]
Section titled “weibullvariate[alpha; beta]”ワイブル分布からランダムな数値を返します。
choice[arr]
Section titled “choice[arr]”配列からランダムな要素を返します。
use p-random as rr.choice[[///red///; ///green///; ///blue///]] -- 例: "green"choices[arr; k]
Section titled “choices[arr; k]”k 個のランダムな要素の配列を返します(復元抽出)。
use p-random as rr.choices[[///a///; ///b///; ///c///]; 5] -- 例: ["b", "a", "c", "a", "b"]wchoices[arr; weights; k]
Section titled “wchoices[arr; weights; k]”k 個の重み付きランダム選択を返します。各要素の確率はその重みに比例します。
use p-random as rr.wchoices[[///rare///; ///common///]; [1; 9]; 10]-- ほとんど "common"shuffle[arr]
Section titled “shuffle[arr]”要素をランダムに並べ替えた新しい配列を返します(元の配列は変更しません)。
use p-random as rr.shuffle[[1, 2, 3, 4, 5]] -- 例: [3, 1, 5, 2, 4]sample[arr; k]
Section titled “sample[arr; k]”配列から k 個のユニークなランダム要素を返します(非復元抽出)。
use p-random as rr.sample[[1, 2, 3, 4, 5]; 3] -- 例: [4, 1, 3]binomial[n; p]
Section titled “binomial[n; p]”二項分布からランダムな数値を返します: 確率 p の n 回の試行における成功回数。
use p-random as rr.binomial[10; 0.5] -- 例: 6poisson[lambda]
Section titled “poisson[lambda]”期待値 lambda のポアソン分布からランダムな数値を返します。
geometric[p]
Section titled “geometric[p]”幾何分布からの値を返します: 確率 p で最初の成功を得るまでの試行回数。
ユーティリティ
Section titled “ユーティリティ”clamp[val; lo; hi]
Section titled “clamp[val; lo; hi]”val を [lo, hi] の範囲にクランプして返します。
use p-random as rr.clamp[15; 0; 10] -- 10r.clamp[-5; 0; 10] -- 0r.clamp[5; 0; 10] -- 5lerp[a; b; t]
Section titled “lerp[a; b; t]”a と b の間を係数 t(0〜1)で線形補間します。
use p-random as rr.lerp[0; 100; 0.5] -- 50r.lerp[0; 100; 0.25] -- 25