関連情報

C#による Gaussian copulaから疑似乱数行列を生成

C#によるサンプルソースコード
使用関数名:g05rd

Keyword: Gaussian copula, 疑似乱数

概要

本サンプルはGaussian copulaから疑似乱数行列の生成を行うC#によるサンプルプログラムです。 本サンプルは以下に示される共分散行列をもつGaussian copulaから10個の疑似乱数を生成し出力します。

Gaussianのデータ 

※本サンプルはNAG Library for .NETに含まれる関数 g05rd() のExampleコードです。本サンプル及び関数の詳細情報は g05rd のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

出力結果

(本関数の詳細はg05rd のマニュアルページを参照)

この出力例をダウンロード
g05rd Example Program Results

     0.6364     0.0517     0.4137     0.8817
     0.1065     0.2461     0.7993     0.3806
     0.7460     0.6313     0.2708     0.5421
     0.7983     0.0564     0.6868     0.9234
     0.1046     0.5790     0.8533     0.2208
     0.4925     0.2784     0.3513     0.5158
     0.3843     0.2349     0.9472     0.7801
     0.7871     0.9941     0.9403     0.2044
     0.4982     0.9015     0.7176     0.2914
     0.6717     0.5359     0.5961     0.4487

  • 3〜12行目に生成された疑似乱数が出力されています。

ソースコード

(本関数の詳細はg05rd のマニュアルページを参照)

※本サンプルソースコードは .NET環境用の科学技術・統計計算ライブラリである「NAG Library for .NET」の関数を呼び出します。
サンプルのコンパイル及び実行方法


このソースコードをダウンロード
// g05rd Example Program Text
// C# version, NAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
  public class G05RDE
  {
    static void Main(String[] args)
    {
      StartExample();
    }
    public static void StartExample()
    {
      try
      {
        const int mseed=1;
        int genid,   i,   j,   m,   mode,   n,   subid; 
        int[] seed = new int[mseed];
        int ifail;
        Console.WriteLine("g05rd Example Program Results");
        Console.WriteLine("");
        //      Set the number of variables and variates
        m = 4;
        n = 10;
        double[] r = new double[m*(m+1)+1];
        double[,] x = new double[n, m];
        double[,] c = new double[m, m];
        //      Input the upper triangle portion of the covariance matrix
        c[0 , 0] = 1.690e0;
        c[0 , 1] = 0.390e0;
        c[0 , 2] =  -1.860e0;
        c[0 , 3] = 0.070e0;
        c[1 , 0] = 0.390e0;
        c[1 , 1] = 98.010e0;
        c[1 , 2] =  -7.070e0;
        c[1 , 3] =  -0.710e0;
        c[2 , 0] =  -1.860e0;
        c[2 , 1] =  -7.070e0;
        c[2 , 2] = 11.560e0;
        c[2 , 3] = 0.030e0;
        c[3 , 0] = 0.070e0;
        c[3,  1] =  -0.710e0;
        c[3 , 2] = 0.030e0;
        c[3 , 3] = 0.010e0;
        //      Initialise the seed
        seed[0] = 1762543;
        //      Choose the random generator to use
        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 L40;
        }
        //      Set up reference vector and generate variates
        //      Choose mode = 2
        mode = 2;
        G05.g05rd(mode, n, m, c,  r,  g05State, x , out ifail);
        if (ifail != 0)
        {
          Console.WriteLine("** g05rd failed with ifail = {0,5}", ifail);
          goto L40;
        }
        //      Display the results
        for (i = 1 ; i <= n ; i++)
        {
          for (j = 1 ; j <= m ; j++)
          {
            Console.Write(" {0, 10:f4}", x[i - 1 , j - 1]);
          }
          Console.WriteLine("");
        }
        // 
        L40: ;
        // 
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
        Console.WriteLine( "Exception Raised");
      }
    }
  }
}


Results matter. Trust NAG.

Privacy Policy | Trademarks