関連情報

対数正規準乱数列の生成

Fortranによるサンプルソースコード
使用ルーチン名:g05ykf

Keyword: 対数正規準乱数列

概要

本サンプルは対数正規準乱数列の生成を行うFortranによるサンプルプログラムです。 本サンプルは対数正規分布から準乱数列を生成し出力します。

※本サンプルはNAG Fortranライブラリに含まれるルーチン g05ykf() のExampleコードです。本サンプル及びルーチンの詳細情報は g05ykf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg05ykf のマニュアルページを参照)

このデータをダウンロード
G05YKF Example Program Data
1               :: GENID
5  4  1000      :: N,IDIM,ISKIP
1.0 2.0 3.0 4.0 :: XMEAN
1.0 1.0 1.0 1.0 :: XSTD

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に使用する生成器(genid=1:Sobol生成器)を指定しています。
  • 3行目に必要とする準乱数の数(n=5)、次元数(idim=4)、生成器の初期化でスキップする数列の項数(iskip=1000)を指定しています。
  • 4行目に各次元の正規分布の平均(xmean)を指定しています。
  • 5行目に各次元の正規分布の標準偏差(xstd)を指定しています。

出力結果

(本ルーチンの詳細はg05ykf のマニュアルページを参照)

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

     4.8648    9.4382    2.4979   21.5895
    17.7572    4.9813   41.8501  233.2386
     2.5195   20.5384   10.8353   45.3933
     1.8229    6.8823    6.9276   32.4808
     7.4938   49.7034   29.0198  127.4745

  • 3〜7行目に生成された5個の4次元の準乱数列が出力されています。

ソースコード

(本ルーチンの詳細はg05ykf のマニュアルページを参照)

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


このソースコードをダウンロード
    PROGRAM g05ykfe

!      G05YKF Example Program Text

!      Mark 23 Release. NAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g05ykf, g05ylf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       INTEGER                         :: genid, i, idim, ifail, iskip,        &
                                          ldquas, liref, n
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: quas(:,:), std(:), xmean(:)
       INTEGER, ALLOCATABLE            :: iref(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G05YKF Example Program Results'
       WRITE (nout,*)

!      Skip heading in data file
       READ (nin,*)

!      Readin the generator to use
       READ (nin,*) genid

!      Read in problem size
       READ (nin,*) n, idim, iskip

       IF (genid==4) THEN
          liref = 407
       ELSE
          liref = 32*idim + 7
       END IF
       ldquas = n
       ALLOCATE (quas(ldquas,idim),iref(liref),xmean(idim),std(idim))

!      Read in the parameters for the distribution
       READ (nin,*) xmean(1:idim)
       READ (nin,*) std(1:idim)

!      Initialize the generator
       ifail = 0
       CALL g05ylf(genid,idim,iref,liref,iskip,ifail)

!      Generate N values for the normal distribution
       ifail = 0
       CALL g05ykf(xmean,std,n,quas,iref,ifail)

!      Display results
       WRITE (nout,99999) (quas(i,1:idim),i=1,n)

99999  FORMAT (1X,4F10.4)
    END PROGRAM g05ykfe


Results matter. Trust NAG.

Privacy Policy | Trademarks