This post is also available in: English (英語)
やぁ、Ironlanderの諸君。今日も鉄にダイス運アップの誓いを立てているかな。
僕はサイコロに見放されっぱなしさ!!
……ということで、Ironswornの判定成功確率をPythonを使ってシミュレーションしてみた。
アクションロール成功確率
それぞれのステータスと判定への補正を合計した値につき、100万回ずつ試行した。
コード
Pythonで以下のコードを組んで試した。
#Action Roll
import random as rand
print('Enter your Modifier for Action Roll')
Modifier = int(input())
Stronghit = 0
Weakhit = 0
Miss = 0
for i in range(1, 1000000):
actiondice = rand.randint(1,6)
actionscore = Modifier + actiondice
if actionscore > 10:
actionscore = 10
challengedice1 = rand.randint(1,10)
challengedice2 = rand.randint(1,10)
if actionscore > challengedice1 and actionscore > challengedice2:
Stronghit += 1
elif actionscore <= challengedice1 and actionscore <= challengedice2:
Miss += 1
else:
Weakhit += 1
print('Stronghit ' + str(Stronghit * 0.0001))
print('Weakhit ' + str(Weakhit * 0.0001))
print('Miss ' + str(Miss * 0.0001))
結果
結果は%で表記。
小数点第二位以下切捨て。
100万回ずつ試したとはいえランダム試行なので、純粋に場合の数を数え上げた場合とは若干乖離するので注意されたい。判定ルール的に補正9と10は実質的に同じ値となるため、値の順番が上下で入れ替わっているように見えるのは、ただの乱数の揺らぎである。
| 補正合計値 | ミス(%) | ウィークヒット(%) | ストロングヒット(%) |
| 1 | 45.1% | 39.6% | 15.2% |
| 2 | 33.1% | 43.6% | 23.2% |
| 3 | 23.1% | 43.6% | 33.1% |
| 4 | 15.1% | 39.7% | 45.0% |
| 5 | 9.3% | 34.6% | 55.9% |
| 6 | 5.3% | 29.3% | 65.3% |
| 7 | 2.8% | 24.2% | 72.8% |
| 8 | 1.4% | 20.2% | 78.2% |
| 9 | 0.9% | 18.0% | 80.9% |
| 10 | 1.0% | 18.0% | 80.9% |
初期作成のキャラの能力値は1~3なので、結構な確率でミスをすること、ウィークヒット確率自体はこの帯域では大差なく、ミス確率がストロングヒット確率へと転化されていることが分かる。
ちなみに、ミス確率が10%を切るのは補正合計が5を超えてから。
ストロングヒット確率は補正値が上がるにつれて伸びが緩やかになり、80.9%前後で打ち止めとなる。
そのため、「バフを積みまくればストロングヒットしかしないぜ!!」とはならない。
バーニングモメンタムとプログレスロール成功率
モメンタムの値とプログレススコアの値に対し、100万回ずつ試行した。
コード
Pythonで以下のコードを組んで試した。
#Burning Momentum
import random as rand
print('Enter your Momentum')
Momentum = int(input())
Stronghit = 0
Weakhit = 0
Miss = 0
for i in range(1, 1000000):
challengedice1 = rand.randint(1,10)
challengedice2 = rand.randint(1,10)
if Momentum > challengedice1 and Momentum > challengedice2:
Stronghit += 1
elif Momentum <= challengedice1 and Momentum <= challengedice2:
Miss += 1
else:
Weakhit += 1
print('Stronghit ' + str(Stronghit * 0.0001))
print('Weakhit ' + str(Weakhit * 0.0001))
print('Miss ' + str(Miss * 0.0001))
結果
結果は%で表記。
小数点第二位以下切捨て。
100万回ずつ試したとはいえランダム試行なので、純粋に場合の数を数え上げた場合とは若干乖離するので注意されたい。バーニングモメンタムとプログレスロールは実質的に同じ計算式なのでまとめて検証した。
| モメンタム or プログレススコア | ミス(%) | ウィークヒット(%) | ストロングヒット(%) |
| 1 | 99.9% | 0.0% | 0.0% |
| 2 | 81.0% | 18.0% | 0.9% |
| 3 | 63.9% | 32.0% | 4.0% |
| 4 | 49.0% | 42.0% | 8.9% |
| 5 | 36.0% | 48.0% | 15.9% |
| 6 | 24.9% | 49.9% | 25.0% |
| 7 | 16.0% | 47.9% | 35.9% |
| 8 | 9.0% | 42.0% | 48.9% |
| 9 | 4.0% | 32.0% | 63.9% |
| 10 | 0.9% | 17.9% | 81.0% |
バーニングモメンタムもプログレスロールも、どちらも決定的な場面で行うものなのでミスはかなり痛い。
ミス率が10%を下回るのは、モメンタムとプログレススコアが8以上になってからだ。
そして、そのあたりからストロングヒット確率がぐんぐん急激に伸び、一気に81.0%まで伸びる。
……逆に言えば、モメンタムとプログレススコアを溜めに溜めても、2割ほどの確率でストロングヒットにならないということでもある。
まとめ
確率計算大好き!!!
みんなもPythonぶん回そうぜ!!!!!!

******************************************************************
本記事は、TRPG『IronSworn』のルールを解説・引用し、必要に応じて翻訳や再構成を行っています。
IronSworn © Shawn Tomkin
本作品は Creative Commons Attribution 4.0 International
(CC BY 4.0)ライセンスの下で公開されています。
原著公式サイト:https://www.ironswornrpg.com/
This work is based on Ironsworn (found at www.ironswornrpg.com), created by Shawn Tomkin, and licensed for our use under the Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/).
