@RISK、ModelRisk、Analytic Solverのモデルを移行する
xellstormは、@RISK・ModelRisk・Analytic Solver用に作ったExcelファイルをアドインなしで開き、分布関数164個を読み取ります。該当する数式はそれぞれ入力に変換し、パラメーターはセルにリンクしたままにします。実行前に、変換したものと、変換せずに残した数式をすべて、理由とともに一覧で示します。
164個の関数の内訳は、@RISKが53個、ModelRiskが62個、Analytic Solverが49個です。パーセンタイルで分布を指定する形式が65種類あり、切断、出力マーカー、相関行列、複数シミュレーションの表も読み取ります。
@RISK用のファイルでインポートが見つけるもの
このサンプルは、プロジェクトのコンティンジェンシーの例にある建築工事の見積もりを、@RISKで作ったモデルと同じ書き方にしたものです。各コスト項目は、その行のセルを使った =RiskPert(min, most likely, max, RiskName(label))、各リスクイベントは確率のセルを使った RiskBernoulli です。総コストと超過額には RiskOutput を付け、躯体とMEPは RiskCorrmat で相関させ、3通りの予算は1つの RiskSimtable に入れ、1つのセルには総コストの RiskMean を置いています。2枚目のDemonstrationsシートには、個別の数式が5つあります。変換できる算術式が2つ、変換できない数式が3つです。ファイルはスクリプトで作りました。xellstormが読み取るのに@RISKは要りません。ダウンロードして試すときも同じです。
アプリでは、「Distributions」ステップのImport from workbookを押すと、見つかった数式が一覧に出ます(コマンドラインの xellstorm import も同じ一覧を表示します)。このファイルでは12個の入力に変換されます。内訳は、コスト項目6個、リスクイベント4個、算術デモ2個です。コスト項目とリスクイベントはパラメーターがセルにリンクしたままなので、ファイル側で最小値や確率を書き換えると、次の実行に反映されます。RiskName(A3) は、その行のテキストを各入力の名前にします。変換される算術デモの2つは、正規分布の引きに係数を掛けたものと、平均を別のセルから計算するものです。どちらも、見積もりの出力には使っていません。
| セル | Excelファイルの数式 | 変換結果 |
|---|---|---|
| E3 | =RiskPert(B3, | 敷地工事:最小B3(100)、最頻C3(120)、最大D3(170)のPERT分布 |
| E4 | =RiskPert(B4, | 基礎:最小B4(300)、最頻C4(340)、最大D4(460)のPERT分布 |
| E5 | =RiskPert(B5, | 躯体:最小B5(760)、最頻C5(820)、最大D5(1,010)のPERT分布 |
| E6 | =RiskPert(B6, | MEP:最小B6(540)、最頻C6(610)、最大D6(780)のPERT分布 |
| E7 | =RiskPert(B7, | 仕上げ:最小B7(400)、最頻C7(450)、最大D7(560)のPERT分布 |
| E8 | =RiskPert(B8, | 設備機器:最小B8(260)、最頻C8(280)、最大D8(330)のPERT分布 |
| D11 | =RiskBernoulli(B11, | 地盤条件:確率B11(0.25)のベルヌーイ分布 |
| D12 | =RiskBernoulli(B12, | 設計変更:確率B12(0.35)のベルヌーイ分布 |
| D13 | =RiskBernoulli(B13, | 納入遅延:確率B13(0.2)のベルヌーイ分布 |
| D14 | =RiskBernoulli(B14, | 悪天候:確率B14(0.3)のベルヌーイ分布 |
| Demonstrations!B3 | =RiskNormal(100, | 平均100、標準偏差10の正規分布。引いた値を1.1倍します。デモ用で、見積もりでは使いません |
| Demonstrations!B4 | =RiskNormal(Estimate!C3*1.1, | 平均Estimate!C3*1.1(132)、標準偏差10の正規分布。デモ用で、見積もりでは使いません |
同じインポートで、モデルの残りの部分も読み取ります。
- 出力。
RiskOutput("Total cost")とRiskOutput("Over budget")を付けたセルは、その名前の出力になります。マーカーは@RISKと同じく0を足すので、セルは問題なく計算できます。 - 相関。
RiskCorrmat(Correlation,1)とRiskCorrmat(Correlation,2)で、躯体とMEPがCorrelationという名前の行列に入ります。順位相関は0.6です(入力されているのは下三角だけで、空白のセルは対角線の反対側の値から読み取ります)。インポート時には、ファイルに保存されている行列の値を読み取り、その旨を表示します。 - シミュレーション。 @RISKでは、
RiskSimtable({2900,3000,3100})がシミュレーションごとに予算へ値を1つずつ入れます。xellstormは、基準の実行では予算を2,900に固定し、残りの2つをシナリオとして追加します。シナリオは基準の実行と同じ乱数を使うので、違いは予算だけです。 - 統計。
RiskMeanなど、結果をセルに返す関数は分布ではないので、未変換の一覧には出ません。@RISKの外では値を持たないため(互換性チェックがそのセルを示します)、平均はxellstormの結果で確認します。
変換できない数式も一覧に出ます。2枚目のシートにある3件にはすべて、インポートが示す理由が付き、それぞれに対処方法があります。
| 数式 | 示される理由 | 対処 |
|---|---|---|
=RiskBinomial(1, | 1つの数式に複数の分布があるものは変換されません。分布ごとに専用の入力セルを用意してください | 分割します。リスクが発生するかどうかを =RiskBernoulli(0.3) のセルに、影響額を =RiskTriang(20,40,80) のセルに入れ、3つ目のセルで掛け合わせます。見積もりのリスクイベントと同じ方法です。 |
=RISKCOMPOUND(RiskPoisson(3), | RISKCOMPOUNDにそのまま対応するxellstormの機能はありません | xellstormには複合分布がありません。件数と規模を別々のセルでモデル化するか、そのセルをモデルから外してください。 |
=RISKPERTALT(10%, | RISKPERTALTにそのまま対応するxellstormの機能はありません | PERTの最小・最頻・最大を入力する(RiskPert)か、変換できる RiskTrigen にパーセンタイルを指定してください。 |
変換したモデルを実行する
インポートした設定で5,000回の試行を実行すると、総コストの平均は2,784.7(USD千)です。同じ分布から理論上求まる平均は2,784.7で、PERTの平均(最小+4×最頻+最大)/ 6に、各リスクの確率×影響額を足したものです。シミュレーションの平均の標準誤差は1.7。躯体とMEPの順位相関は0.60に達します。RiskSimtableの3通りの予算を、基準と2つのシナリオとして実行した結果です。
| 実行 | 予算 | 超過する確率 |
|---|---|---|
| 基準の実行(シミュレーション1) | 2,900 | 17.7% |
| Simulation 2 | 3,000 | 5.2% |
| Simulation 3 | 3,100 | 0.7% |
予算が大きいほど、超過する確率は下がります。シナリオは基準の実行と同じ乱数を使うので、行どうしの差はサンプリングではなく、予算の違いだけから来ています。
アドインと同じ結果になりますか?
モデルは同じですが、乱数は同じではありません。インポートの各ルールは、関数を、その関数が表す分布に対応づけます。パラメーターはベンダーの文書どおりに変換し、scipyの同等の分布と照合してテストしています。テストデータを作るスクリプトでも、各対応の平均をベンダーが文書化した式と照らし合わせています。ファイル内のすべての分布が変換できれば、平均とパーセンタイルがアドインとずれるのはサンプリングノイズの分だけで、試行回数を増やすほど小さくなります。平均のずれの目安は、上の標準誤差です。
相関は、@RISKやAnalytic Solverの定義と同じ順位相関で、xellstormは指定した順位相関に到達します。ただし、その順位相関にするための乱数の組み合わせ方はツールごとに違います。相関のあるモデルでは、裾の差がサンプリングノイズだけで説明できる範囲より少し大きくなることがあります。Excelファイル自体は書き換えません。xellstormはファイルを読み取るだけなので、モデルはこれまでどおりアドインで開けます。
変換されるもの
- 分布と算術式の引数。 分布は単独でも、正の乗数1つに加算か減算のオフセットを最大1つ付けた形でもかまいません。
RiskNormal(B1*1.1,B2)*C1+5と5+C1*RiskNormal(B1,B2)は変換できます。引数・乗数・オフセットには、数値、単一セルの参照、括弧、+、−、*、/が使えます。1つのセルを指す定義名は、そのアドレスに置き換わります。これらの式はリンクを保ち、各シナリオの固定セルを適用してから評価します。参照はすべて、乱数を含まず毎回同じ値になるものでなければなりません。表で†を付けた関数は、数値のみの場合に変換できます。 - パーセンタイル形式。 @RISKの
…Alt、…AltD関数とAnalytic Solverの…Alt関数(下の表にあるもの)は、パーセンタイルで分布を指定します。xellstormは実行時に、そのパーセンタイルを満たす分布を正確に解きます。当てはまる分布がない場合や複数ある場合は、エラーにします。 - 切断とシフト。
RiskTruncate、RiskTruncate2、RiskTruncateP、RiskShift、VoseXBounds、VosePBounds、VoseShift、PsiTruncate、PsiTruncateP、PsiShiftを、各アドインの文書どおりの順序で適用します。分布の外側に付けた乗数とオフセットはその後に適用し、入力の設定に別の項目として表示します。 - 名前とロック。
RiskName、PsiName、VoseInputは入力に名前を付け、RiskLockは入力を1つの値に固定します。無視するプロパティもカタログに載っています(Static、Units、Category、Collect、Base、Seed、IsDiscrete、IsDate、Fit、FitInfo、Certify、BaseCase、Library、SixSigma。それぞれ先頭にベンダーの接頭辞が付きます)。RiskSeedは警告になります。乱数ストリームの設定は引き継がず、引きはxellstormのシミュレーションのシードと入力の順序で決まります。 - 出力。
RiskOutput、VoseOutput、PsiOutput、PsiSimOutputは出力の印です。Analytic SolverではPsiMean(B1)のような統計関数もB1を出力にし、xellstormでも同様です。 - 相関とシミュレーション。
RiskCorrmat、RiskDepCとRiskIndepC、PsiCorrMatrix、PsiCorrDepenとPsiCorrIndep。RiskSimtable、VoseSimTable、PsiSimParam。 - Excel標準の数式。
NORM.INV(RAND(), mean, sd)、RANDBETWEEN、IF(RAND() < p, 1, 0)など、全部で18種類を、下に一覧にしています。
変換されないもの
1つのセルに分布が複数ある場合、分布が別の関数の中や分母にある場合、分布を直接割る場合、演算の順序を入れ替えないと成り立たない連鎖は、変換できません。たとえば (RiskNormal(0,1)+5)*2 と RiskNormal(0,1)*2*3 は、理由を付けて残します。RiskNormal(0,1)*(1/C1) は、C1が有限の正の乗数になるなら変換できます。数式が掛ける前に逆数を明示的に計算しているためです。次のものも未対応のままです。計算結果がゼロ以下になる乗数、関数を呼び出す引数や乱数セルに依存する引数、そのまま対応する分布がない関数(複合分布、時系列関数、RiskPertAlt をはじめ、形状パラメーターを2つ持つパーセンタイル形式)、ModelRiskのU引数とコピュラ、表にないプロパティ。未対応のアドインの数式は、エンジンで計算できません。互換性チェックがそのセルを示します。
対応する関数
表は、インポートのルール一覧からそのまま作っているので、変換できるものと完全に一致します。「パーセンタイル」は、パーセンタイルで分布を指定する形式を示します。†は、数値のみで変換できる関数です。各分布の下に、xellstormの設定での名前を示します。
| 分布 (xellstormでの名前) | @RISK | ModelRisk | Analytic Solver |
|---|---|---|---|
ベルヌーイbern | RiskBernoulli | VoseBernoulli | PsiBernoulli |
ベータbeta | RiskBetaRiskBetaGeneralRiskBetaSubj† | VoseBetaVoseBeta4VoseBetaSubj† | PsiBetaPsiBetaGenPsiBetaSubj† |
二項binom | RiskBinomial | VoseBinomial | PsiBinomial |
Burr XIIburr12 | RiskBurr12 | — | — |
コーシーcauchy | RiskCauchyパーセンタイル: RiskCauchyAltRiskCauchyAltD | VoseCauchy | — |
カイ二乗chi2 | RiskChiSqパーセンタイル: RiskChiSqAltRiskChiSqAltD | VoseChiSq | PsiChiSquareパーセンタイル: PsiChiSquareAlt |
カイ、マクスウェルchi | — | VoseChiVoseMaxwell | — |
累積cumul | RiskCumulRiskCumulD† | VoseCumulAVoseCumulD†VoseOgive† | PsiCumul |
Dagum(Burr III)burr | RiskDagum | VoseDagum | PsiDagum |
離散custom | RiskDiscreteRiskDUniform | VoseDiscreteVoseDUniform | PsiDiscretePsiDisUniform |
指数expon | RiskExponパーセンタイル: RiskExponAltRiskExponAltD | VoseExponVoseExponential | PsiExponentialパーセンタイル: PsiExponentialAlt |
極値(最大、ガンベル)gumbel_r | RiskExtValueパーセンタイル: RiskExtValueAltRiskExtValueAltD | VoseExtValueMax | PsiMaxExtremeパーセンタイル: PsiMaxExtremeAlt |
極値(最小)gumbel_l | RiskExtValueMinパーセンタイル: RiskExtValueMinAltRiskExtValueMinAltD | — | PsiMinExtremeパーセンタイル: PsiMinExtremeAlt |
Ff | RiskF | VoseF | PsiFDist |
疲労寿命(バーンバウム=サンダース)fatiguelife | RiskFatigueLifeパーセンタイル: RiskFatigueLifeAltRiskFatigueLifeAltD | VoseFatigue | PsiFatigueLifeパーセンタイル: PsiFatigueLifeAlt |
フレシェinvweibull | RiskFrechetパーセンタイル: RiskFrechetAltRiskFrechetAltD | — | PsiFrechetパーセンタイル: PsiFrechetAlt |
ガンマ、アーランgamma | RiskGammaRiskErlangパーセンタイル: RiskGammaAltRiskGammaAltD | VoseGammaVoseErlang | PsiGammaPsiErlangパーセンタイル: PsiGammaAlt |
一般(相対重み)general | RiskGeneral | VoseRelative | — |
一般化パレートgenpareto | — | VoseGPD | — |
ヒストグラムhistogram | RiskHistogrm | VoseHistogram | PsiHistogram |
双曲線正割hypsecant | RiskHypSecantパーセンタイル: RiskHypSecantAltRiskHypSecantAltD | VoseHS | PsiHypSecant |
超幾何hypergeom | RiskHypergeo | VoseHypergeo | PsiHyperGeo |
整数一様randint | RiskIntUniform | VoseIntUniformVoseStepUniform† | PsiIntUniform |
逆ガウスinvgauss | RiskInvgaussパーセンタイル: RiskInvgaussAltRiskInvgaussAltD | VoseInvGauss | PsiInvNormal |
ジョンソンSBjohnsonsb | RiskJohnsonSB | VoseJohnsonB | PsiJohnsonSB |
ジョンソンSUjohnsonsu | RiskJohnsonSU | VoseJohnsonU | PsiJohnsonSU |
クマラスワミーkumaraswamy | RiskKumaraswamy | VoseKumaraswamyVoseKumaraswamy4 | PsiKumaraswamy |
ラプラスlaplace | RiskLaplaceパーセンタイル: RiskLaplaceAltRiskLaplaceAltD | VoseLaplace | — |
レヴィlevy | RiskLevyパーセンタイル: RiskLevyAltRiskLevyAltD | VoseLevy | PsiLevyパーセンタイル: PsiLevyAlt |
対数ロジスティックfisk | RiskLogLogisticパーセンタイル: RiskLogLogisticAltRiskLogLogisticAltD | VoseLogLogistic | PsiLogLogisticパーセンタイル: PsiLogLogisticAlt |
ロジスティックlogistic | RiskLogisticパーセンタイル: RiskLogisticAltRiskLogisticAltD | VoseLogistic | PsiLogisticパーセンタイル: PsiLogisticAlt |
対数正規lognorm | RiskLognormRiskLognorm2パーセンタイル: RiskLognormAltRiskLognormAltD | VoseLognormalVoseLognormalE | PsiLogNormalPsiLognormPsiLognorm2パーセンタイル: PsiLogNormalAlt |
負の二項、幾何nbinom | RiskGeometRiskNegbin | VoseGeometricVoseNegBinVoseNegBinomVosePolya† | PsiGeometricPsiNegBinomial |
正規norm | RiskNormalRiskErf†パーセンタイル: RiskNormalAltRiskNormalAltD | VoseNormalVoseErf† | PsiNormalPsiErf†パーセンタイル: PsiNormalAlt |
パレートpareto | RiskParetoパーセンタイル: RiskParetoAltRiskParetoAltD | VosePareto | PsiParetoパーセンタイル: PsiParetoAlt |
パレートII(ロマックス)lomax | RiskPareto2パーセンタイル: RiskPareto2AltRiskPareto2AltD | VosePareto2 | PsiPareto2パーセンタイル: PsiPareto2Alt |
ピアソンV(逆ガンマ)invgamma | RiskPearson5パーセンタイル: RiskPearson5AltRiskPearson5AltD | VosePearson5 | PsiPearson5パーセンタイル: PsiPearson5Alt |
ピアソンVI(ベータプライム)betaprime | RiskPearson6 | VosePearson6 | PsiPearson6 |
PERTpert | RiskPert | VosePERTVoseModPERT | PsiPert |
ポアソンpoiss | RiskPoisson | VosePoisson | PsiPoisson |
レイリーrayleigh | RiskRayleighパーセンタイル: RiskRayleighAltRiskRayleighAltD | VoseRayleigh | PsiRayleighパーセンタイル: PsiRayleighAlt |
逆数(対数一様)loguniform | RiskReciprocal | VoseReciprocal | PsiReciprocal |
スチューデントのtt | RiskStudentパーセンタイル: RiskStudentAltRiskStudentAltD | VoseStudentVoseStudent3† | PsiStudentパーセンタイル: PsiStudentAlt |
三角triang | RiskTriang | VoseTriangle | PsiTriangular |
パーセンタイルによる三角(Trigen)trigen | RiskTrigenパーセンタイル: RiskTriangAlt | VoseTriangleAlt | PsiTriangGen |
一様unif | RiskUniformパーセンタイル: RiskUniformAltRiskUniformAltD | VoseUniform | PsiUniform |
ワイブルweibull_min | RiskWeibullパーセンタイル: RiskWeibullAltRiskWeibullAltD | VoseWeibullVoseWeibull3 | PsiWeibullパーセンタイル: PsiWeibullAlt |
| 数式 | xellstorm |
|---|---|
=NORM.INV(RAND(), | norm (loc, scale) |
=NORMINV(RAND(), | norm (loc, scale) |
=mean + sd*NORM.S.INV(RAND()) | norm (loc, scale) |
=LOGNORM.INV(RAND(), | lognorm (mu, sigma) |
=LOGINV(RAND(), | lognorm (mu, sigma) |
=GAMMA.INV(RAND(), | gamma (a, scale) |
=GAMMAINV(RAND(), | gamma (a, scale) |
=BETA.INV(RAND(), | beta (a, b) |
=BETA.INV(RAND(), | beta (a, b, min, max) |
=BETAINV(RAND(), | beta (a, b, min, max) |
=BINOM.INV(n, | binom (n, p) |
=CRITBINOM(n, | binom (n, p) |
=RANDBETWEEN(a, | randint (min, max) |
=a + (b - a)*RAND() | unif (min, max) |
=a + s*RAND() | unif (loc, scale) |
=RAND() | unif |
=IF(RAND() < p, | bern (p) |
=IF(RAND() < p,† | custom (x, prob) |
| 関数 | アドイン | xellstormでの扱い |
|---|---|---|
RiskTruncate | @RISK | 切断:truncate_min、truncate_max(シフトの前) |
RiskTruncate2 | @RISK | 切断:シフト後の値で指定した truncate_min、truncate_max(シフト分だけ戻して設定) |
RiskTruncateP | @RISK | 切断:truncate_pmin、truncate_pmax(分布のパーセンタイル) |
RiskShift | @RISK | シフト:shift |
RiskName | @RISK | 名前:入力の名前 |
RiskLock | @RISK | ロック:固定値(RiskLock(v)、またはRiskStaticの値) |
RiskCorrmat | @RISK | 相関:1つの行列にある入力どうしの順位相関 |
RiskDepC | @RISK | 相関:同じペア名の入力との順位相関 |
RiskIndepC | @RISK | 相関:同じペア名の入力との順位相関 |
RiskSimtable | @RISK | シミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ |
RiskOutput | @RISK | 出力:指定した名前の出力 |
VoseXBounds | ModelRisk | 切断:truncate_min、truncate_max(シフトの前) |
VosePBounds | ModelRisk | 切断:truncate_pmin、truncate_pmax(分布のパーセンタイル) |
VoseShift | ModelRisk | シフト:shift |
VoseInput | ModelRisk | 名前:入力の名前 |
VoseSimTable | ModelRisk | シミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ |
VoseOutput | ModelRisk | 出力:指定した名前の出力 |
PsiTruncate | Analytic Solver | 切断:タイプ1(既定):シフトの前に truncate_min、truncate_max。-1:シフト後の値で指定。3:truncate_pmin、truncate_pmax |
PsiTruncateP | Analytic Solver | 切断:truncate_pmin、truncate_pmax(分布のパーセンタイル) |
PsiShift | Analytic Solver | シフト:shift |
PsiName | Analytic Solver | 名前:入力の名前 |
PsiCorrMatrix | Analytic Solver | 相関:1つの行列にある入力どうしの順位相関 |
PsiCorrDepen | Analytic Solver | 相関:同じペア名の入力との順位相関 |
PsiCorrIndep | Analytic Solver | 相関:同じペア名の入力との順位相関 |
PsiSimParam | Analytic Solver | シミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ |
PsiOutput | Analytic Solver | 出力:そのセル自体、または参照先のセルが出力になります |
PsiSimOutput | Analytic Solver | 出力:そのセル自体、または参照先のセルが出力になります |
PsiMean | Analytic Solver | 統計関数:最初の引数のセルが出力になります(出力に使うPsiの統計関数はすべて同様) |
よくある質問
@RISK、ModelRisk、Analytic Solverのインストールは必要ですか?
いいえ。xellstormは.xlsxファイルから直接数式を読み取り、Excelもアドインも使わず、ブラウザー内の独自エンジンでモデルを計算します。.xlsや.xlsbのファイルは、先に.xlsxとして保存してください。
xellstormはExcelファイルを書き換えますか?
いいえ。インポートは、数式をxellstorm側の設定の入力に変換するだけです。パソコン上のファイルには書き込まないので、モデルはこれまでどおりアドインで開いて実行できます。
相関行列はどうなりますか?
RiskCorrmat または PsiCorrMatrix の同じ範囲を指す入力には、インポート時にセルから読み取った行列の順位相関が設定されます。RiskDepC と PsiCorrDepen は、入力を同じ名前の入力と組にします。読み取れない組(正方でない行列、行列の外の位置、数値のないセル)は、インポートの注記に名前が出ます。変換できなかった入力は理由とともに一覧に載り、組からは外れます。行列が有効な相関行列でない場合、xellstormは最も近い有効な行列に置き換え、アプリが実行前にその行列を表示します。
RiskSimtableはどうなりますか?
最初の値は基準の実行でそのセルに入り、2番目以降の値はそれぞれシナリオになります。名前は Simulation 2、Simulation 3、…です。シナリオは基準の実行と同じ乱数を使うので、シナリオ間の違いは表の値だけから来ています。
@RISK、ModelRisk、Analytic Solverは、それぞれの所有者の商標です。xellstormはこれらと提携関係になく、関数名は、xellstormが読み取る内容を示すためだけに載せています。
関連ページ
- プロジェクトのコストとスケジュール
建築工事にコンティンジェンシー(予備費)はどれくらい必要か?
例題:建築工事の見積もりでは、シミュレーション結果の94.2%が、最も可能性の高いコストの合計を超えます。建築工事のコンティンジェンシー(予備費)をモンテカルロシミュレーションで見積もります。 - ガイド
Excelでモンテカルロシミュレーション:アドインあり・なしの3つの方法
Excelモデルでモンテカルロシミュレーションを実行する3つの方法:RAND()とデータテーブル、アドイン、アドイン不要のブラウザーツール。PERT分布の数式付き。 - ガイド
ExcelでPERT分布を使う:数式・平均・使いどころ
PERT分布は、最小から最大までのベータ分布で、平均は(最小+4×最頻+最大)/ 6です。ExcelのBETA.INV数式と、三角分布との違いも解説します。
xellstormは、Excelモデル向けのブラウザー型モンテカルロシミュレーションツールです。アドインは不要で、Excelファイルがパソコンの外に出ることはありません。