現在避難シミュレーションを検討しており、避難者を11段階の属性(年齢別)に分類しそれぞれ速度を設定しました。
そこに、避難者一人一人の個人差を考慮して、±0.3m/secの差をランダムにつけたいと考えています。
Rnd()や±0.3の標準偏差を用いた正規分布を使うなどの方法がありそうなのですが、やり方が考えつきませんでした。
ご助言があればどうかお願いいたします。
以下に速度について貼り付けます。
...............................................................................................................................................................
// 避難速度を取得する
Function get_group_speed(groupType As Integer) As Double
{
Dim speed As Double
If groupType == 0 Then
// 0:0,5
speed = 0.81 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 1 Then
// 1:10,15
speed = 1.28 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 2 Then
// 2:20,25
speed = 1.34 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 3 Then
// 2:30,35
speed = 1.33 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 4 Then
// 2:40,45
speed = 1.31 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 5 Then
// 2:50,55
speed = 1.17 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 6 Then
// 2:60,65
speed = 1.05 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 7 Then
// 2:70,75
speed = 0.92 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 8 Then
// 2:80,85
speed = 0.75 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 9 Then
// 2:90,95
speed = 0.61 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
ElseIf groupType == 10 Then
// 2:100
speed = 0.52 * Universe.ScaleTime / Universe.ScaleDistance // 歩行速度(m/sec)
End If
Return(speed)
}
..............................................................................................................................................................
artisocを利用し始めたばかりでほとんどのことを把握できていない上での質問になってしまい申し訳ありません。
どうぞよろしくお願いいたします。
正規分布を計算したいときはNormInv関数を使うとよいと思います。
https://smart-hint.com/excel/norm-inv/