関連情報
ホーム > 製品 > NAG数値計算ライブラリ > C#向けNAGライブラリ > サンプルソースコード集 > スチューデントt-copulaから疑似乱数行列を生成

C#による スチューデントt-copulaから疑似乱数行列を生成

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

Keyword: スチューデントt-copula, 疑似乱数

概要

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

スチューデントt-copulaのデータ 

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

出力結果

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

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

    0.6445    0.0527    0.4082    0.8876
    0.0701    0.1988    0.8471    0.3521
    0.7988    0.6664    0.2194    0.5541
    0.8202    0.0492    0.7059    0.9341
    0.1786    0.5594    0.7810    0.2836
    0.4920    0.2677    0.3427    0.5169
    0.4139    0.2978    0.8762    0.7145
    0.7437    0.9714    0.8931    0.2487
    0.4971    0.9687    0.8142    0.1965
    0.6464    0.5304    0.5817    0.4565

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

ソースコード

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

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


このソースコードをダウンロード
// g05rc Example Program Text
// C# version, NAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
  public class G05RCE
  {
    static void Main(String[] args)
    {
      StartExample();
    }
    public static void StartExample()
    {
      try
      {
        const int mseed=1;
        int df,   genid,   i,   j,   m,   mode,   n,   subid; 
        int[] seed = new int[mseed];
        int ifail;
        Console.WriteLine("g05rc Example Program Results");
        Console.WriteLine("");
        //      Set the number of variables and variates
        m = 4;
        n = 10;
        double[,] x = new double[n, m];
        double[,] c = new double[m, m];
        double[] r = new double[m*(m+1)+2];
        //      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;
        //      Set the degrees of freedom
        df = 10;
        //      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.g05rc(mode, n, df, m, c, r,  g05State, x,  out ifail);
        if (ifail != 0)
        {
          Console.WriteLine("** g05rc failed with ifail = {0,5}", ifail);
          goto L40;
        }
        //      Display the variates
        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