Keyword: 指数混合分布, 疑似乱数ベクトル
概要
本サンプルは指数混合分布から疑似乱数ベクトルの生成を行うC#によるサンプルプログラムです。 本サンプルは以下に示される確率密度関数をもつ、パラメータa1=1.0、a2=5.0、a3=2.0、重み0.5、0.3、0.2の指数混合分布から5個の疑似乱数を生成し出力します。
※本サンプルはnAG Library for .NETに含まれる関数 g05sg() のExampleコードです。本サンプル及び関数の詳細情報は g05sg のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
出力結果
(本関数の詳細はg05sg のマニュアルページを参照)- 4〜8行目に生成された疑似乱数が出力されています。
ソースコード
(本関数の詳細はg05sg のマニュアルページを参照)
※本サンプルソースコードは .NET環境用の科学技術・統計計算ライブラリである「nAG Library for .NET」の関数を呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
// g05sg Example Program Text
// C# version, nAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
public class G05SGE
{
static void Main(String[] args)
{
StartExample();
}
public static void StartExample()
{
try
{
const int mseed=1;
const int n=5;
const int nmix=3;
int genid, i, subid;
double[] a = new double[nmix];
double[] wgt = new double[nmix];
double[] x = new double[n];
int[] seed = new int[mseed];
int ifail;
Console.WriteLine("g05sg Example Program Results");
Console.WriteLine("");Console.WriteLine("");
// Set the distribution parameters a and wgt
a[0] = 1.00e0;
a[1] = 5.00e0;
a[2] = 2.00e0;
wgt[0] = 0.50e0;
wgt[1] = 0.30e0;
wgt[2] = 0.20e0;
// Initialise the seed to a repeatable sequence
seed[0] = 1762543;
// genid and subid identify the base generator.
genid = 1;
subid = 1;
// Initialise the generator to a repeatable sequence
G05.G05State g05State = new G05.G05State(genid, subid, seed, out ifail);
if (ifail != 0)
{
Console.WriteLine("** Generator initialisation failed with ifail = {0,5}", ifail);
goto L20;
}
// Generate the variates
G05.g05sg(n, nmix, a, wgt, g05State, x, out ifail);
if (ifail != 0)
{
Console.WriteLine("** g05sg failed with ifail = {0,5}", ifail);
goto L20;
}
// Display the variates
for (i = 1 ; i <= n ; i++)
{
Console.WriteLine(" {0,8:f4}", x[i - 1]);
}
Console.WriteLine("");
//
L20: ;
//
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine( "Exception Raised");
}
}
}
}
