アリアンロッド2Eのクリティカルの確率を(力技で)試してみた。
最近TRPGを始めました。
その中でもアリアンロッド2EというTRPGをやっているのですが、TPRGに必須なダイスを振った時にダイスがどれだけあったらどのくらいの確率でクリティカルになるかを(力技で)考えてみました
そもそもクリティカルの仕様は
振ったダイスの中に6の目がふたつ以上あった場合は、その判定は自動的に成功となる。これを[クリティカル]と呼ぶ。(アリアンロッドRPG 2E ルールブック①P191より)
というわけでサイコロが2個以上の時に6の目がどれだけあるかを調べれば良いと・・・
というわけでrandを使って試して見ることにした。
def check(time,dice_num) count=0 time.times{ dices = Array.new dice_num.times{ dices.push(rand 6) } dices.delete(5) if(dices.length < dice_num-1) count = count + 1 end } return count end #試行回数 time = 100000 10.times{|dice_num| dice_num = dice_num + 2 count = check(time,dice_num) puts "dice = "+dice_num.to_s+" probability:"+(count.to_f/time.to_f*100).to_s+"%" }
いま見てみるとちょっと(というかかなり)微妙なコードだけど・・・まぁいいや。
checkの中でやってることはサイコロを生成して6の目(プログラムでは0~5が生成されるのでプログラムでは5)を削除して長さが2以上減ってたらクリティカルと考えて実装した。
実行結果は
dice = 2 probability:2.777% dice = 3 probability:7.175% dice = 4 probability:13.186% dice = 5 probability:19.732% dice = 6 probability:26.445% dice = 7 probability:33.046% dice = 8 probability:39.604% dice = 9 probability:45.762% dice = 10 probability:51.397999999999996% dice = 11 probability:57.028%
という形になった。アリアンロッドではフェイトというシステムがあってサイコロを増やすか、もう一度振り直すか選択が出来るんだけど、この結果から4個以上ある場合は普通に振りなおしたほうが効率がいいんだろうな。
とここまでやって数学的にやってらっしゃる方のページを見つけたので哀心よりお悔やみ申し上げます 真・アリアンロッドのクリティカル率比較してみるとやっぱり乱数のせいで正確な値ではないものの、ちゃんと近似値は出ていた。
こんなかんじで日常で書いてるコードを晒していこうかな。