vbaのプログラムを、とりあえずはっときます。でもこれあってるのかなー?
続きは、また今度
Sub べき乗分布サンプリング() 'y = 1/x の場合 Randomize x = 1 '初期値 For i = 1 To 6000 newx = x + WorksheetFunction.NormSInv(Rnd()) '新しい候補 If 1 <= newx Then '1より小さいときは確率0なので却下 If (1 / newx) / (1 / x) > Rnd() Then '比較してOKなら受理 x = newx End If End If If i > 3000 Then '初期値を十分忘れてから書き出し Cells(i - 3000, 1) = x End If Next End Sub