過去ログ

                                Page     549
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼指数乱数(VBA)  里香 03/1/15(水) 15:03
   ┗Re:指数乱数(VBA)  JuJu 03/1/15(水) 15:25
      ┗Re:指数乱数(VBA)  里香 03/1/15(水) 16:15

 ───────────────────────────────────────
 ■題名 : 指数乱数(VBA)
 ■名前 : 里香
 ■日付 : 03/1/15(水) 15:03
 -------------------------------------------------------------------------
   パラメータλの指数乱数を20個発生させる。            
どうすれば、いいですか?
    パラメータλ        
K    1    5    20
1            
2            
3            
4            
5            

こんな表なのですが、プログラムがわかりません。どうか教えてください。
 ───────────────────────────────────────  ■題名 : Re:指数乱数(VBA)  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 03/1/15(水) 15:25  -------------------------------------------------------------------------
   里香さん、こんにちはぁ

>パラメータλの指数乱数を20個発生させる。            

B1にλが入ってるとします。

ワークシート関数なら、
 =-LOG(1-RAND())/B$1
です。
VBAなら、(例えばB2に結果を代入)
 Range("B2").Value = -Log(1 - Rnd()) / Range("B1").Value
です。

20個発生(セルに代入?)でしたら、
ワークシート関数でしたら、さっきの式を、B2〜B21までコピーします。

VBAなら、For文を使って

 For i = 0 To 19
   Range("B2").Offset(i, 0).Value = -Log(1 - Rnd()) / Range("B1").Value
 Next

こんな感じかな。

あと、指数関数の式を普通に展開すると、
 t = -Log(1 - r) / λ
になるのですが、r は乱数なので、
 t = -Log(r) / λ
でもOKです。

ではではぁ
 ───────────────────────────────────────  ■題名 : Re:指数乱数(VBA)  ■名前 : 里香  ■日付 : 03/1/15(水) 16:15  -------------------------------------------------------------------------
   jujuさん、ありがとう。里香すごいうれしかった。
今までこんなにやさしくされたのはじめてなの。
また機会があったら、教えてね。
これからもよろぴく☆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 549