06/12:ボケの確率1/32らしいと聞いたため大幅追記
06/14:大きなミスがあったため、ほぼ全て修正(平均の出し方が間違っていた)
初めに
初めはシャプナーさんの記事を参考に1687で売っていたが、計算方法が微妙に感じたので自分でも考えてみた。
手計算では無理そうなので、VBAで適当なシミュレータを作って回してみることにした。なお、ここでは往復回数は考えずに1秒当たりの利益を計算する。
前提
計算するには実際にかかる時間と価格の決定アルゴリズムが必要である。
時間については自分で計ってみた。あまり上手くはないが、もたついてると感じない程度には最適化したつもり。
・じじいに最後の1個売ってから補充して戻ってきて、7個全部一発で売った時のタイム:1分44.46秒 →7で割って1個当たり14.92秒
・1回のキャンセルによるタイムロス:3.68秒
売却価格の計算方法は以下のwikiに従い、ボケ率は1/32で計算する。
【ボンモール】 - ドラゴンクエスト大辞典を作ろうぜ!!第三版 Wiki*
ゲーム解析倶楽部 第01回 ドラゴンクエストⅣ ボンモールのじじい - ニコニコ動画
コード
赤文字を消すとボケ無しになる。
緑文字の数字が転売ボーダー
Sub maekake()
Range("A1") = "価格"
Range("B1") = "キャンセル回数"
Range("C1") = "利益"
Range("D1") = "時間"
Range("E1") = "利益/時間"
Range("F1") = "総利益"
Range("G1") = "総時間"
Range("H1") = "秒間平均利益"
Const cansel_timeloss As Single = 3.68
Const fastest_time As Single = 14.92
Dim price As Integer
Dim profit As Single
Dim time As Single
Dim bokechance As Integer
Dim i As Long
Dim k As Integer
For i = 1 To 50000
k = 0
Do
bokechance = WorksheetFunction.RandBetween(0, 31)
If bokechance = 0 Then
price = WorksheetFunction.RoundDown(1500 * WorksheetFunction.RandBetween(96, 128) / 64, 0)
Exit Do
Else
price = WorksheetFunction.RoundDown(1500 * WorksheetFunction.RandBetween(54, 80) / 64, 0)
If price >= 1687 Then
Exit Do
Else
k = k + 1
End If
End If
Loop
profit = price - 1507.14
time = fastest_time + cansel_timeloss * k
Cells(i + 1, 1) = price
Cells(i + 1, 2) = k
Cells(i + 1, 3) = profit
Cells(i + 1, 4) = time
Cells(i + 1, 5) = profit / time
Next i
Range("F2") = "=SUM(C2:C50001)"
Range("G2") = "=SUM(D2:D50001)"
Range("H2") = "=F2/G2"
End Sub
結果
各5万回行った平均
ボケありの場合
1664 15.96G/s
1687 16.10G/s
1710 16.01G/s
ボケ無しの場合
1640 12.30G/s
1664 12.37G/s
1687 12.30G/s
1710 12.03G/s
ということで、数値だけ見ると1664Gか1687Gが良いらしい。
結局、先駆者様たちの出してる数値がだいたい正しかったですね。お騒がせしました。
3往復でネネさんへの繋げ方を含めて考えると
最もオーソドックス(?)なモニスタ・760G・鉄槍回収で、ネネさん鉄槍スタートを目指すとすると、最初の前掛け1個を含めて前掛け21個or22個の転売で5924G稼げればいい計算になる。*1
以下、利益はキメつば代とボケを考慮しない値で書く。
1664G以上の平均利益は269.1Gで、21個で5651G、22個で5920Gとなる。22個なら足りる。
1687G以上の平均利益は280.8Gで、21個で5896G、22個で6177Gとなる。21個だとちょっと上振れが必要。
1710G以上の平均利益は292.5Gで、21個で6142G、22個で6435Gとなる。割と余裕あり。
ボケ込みなら1687Gが最適であることも踏まえると、1687G後手紙の21個転売にして、必要に応じて少しボーダーを上げ(場合によっては下げ)ながら、なるべく鉄槍を狙うのが良さそう。(個人的な好み。)
この場合、ボーダーより上で真ん中の1781Gを基準の0とし、そこからの差分で1687を-4、1875を+4とする。1回目前掛け購入開始で30360G、2回目で32000G、3回目33915Gくらいが標準的な値となる。これに対して最終的に合計+2してやれば鉄槍に届くという考え方ができそう。
端数ズレ怖いから3周目電卓の方がいいか。
前までのミス
前の計算方法では、「1個当たりの"時間当たり平均利益"の平均」を計算してしまっていたため、時間を分母とした平均値と大きな差異が生まれてしまっていました。
こんな中学数学レベルのミスをしてるとは思ってなかった。義務教育は偉大。
*1:木の帽子は全価格の平均、鉄盾と青銅は定価より高い値の平均で計算して計1654G、武器と拾った金で1977G、前掛けの購入費1500Gと女神像を合わせて30131G。ここからキメつば7個代175Gを引いて29956G。