MAS コミュニティ
artisoc質問用掲示板(アーカイブ)
  
質問掲示板は移転しました。新掲示板はこちら

質問 (解決済み)

[artisocモデル] 0より大きく1未満の一様乱数を戻す関数について
質問者: midoriさん , 質問日時: 2019/11/27 11:21
KK-MASを使用した論文について学習している者です。
KK-MASにおいて、NotZeroRnd()という関数が”0より大きく1未満の一様乱数を戻す関数”として以下のように定義されています

//0より大きく1未満の一様乱数を戻す関数
Function NotZeroRnd() As Double
{
Dim x As Double
Do While(x == 0)
x = Rnd()
Loop
Return(x)
}

これをそのままartisocで実行すると、この部分のxが「初期化しないで使用しています」というエラーが出ます。KK-MASでのコードにおいてxの初期化のコードや宣言の式は見られません。この関数をartisocで実行するためにはどうしたらよいのか、教えていただきたいです。どうかよろしくお願いします。



▼解決した回答


xが初期化されていない状態で Do While(x==0)で評価しているので、
エラーが出ています。
評価の前にxに値を入れてあげれば良いと思います

//0より大きく1未満の一様乱数を戻す関数
Function NotZeroRnd() As Double
{
Dim x As Double

//この行を追加
x = Rnd()

Do While(x == 0)
x = Rnd()
Loop
Return(x)
}

回答者: ObiWan さん , 回答日時: 2019/11/27 11:58

▼ 全ての回答


xが初期化されていない状態で Do While(x==0)で評価しているので、
エラーが出ています。
評価の前にxに値を入れてあげれば良いと思います

//0より大きく1未満の一様乱数を戻す関数
Function NotZeroRnd() As Double
{
Dim x As Double

//この行を追加
x = Rnd()

Do While(x == 0)
x = Rnd()
Loop
Return(x)
}

回答者: ObiWan さん , 回答日時: 2019/11/27 11:58



Copyright © KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
( 会社情報 情報セキュリティ・個人情報について )