ある戦闘シミュレーションのプログラムを書いているのですが、誤差の出し方が分かりません。
具体的に言うと、最初にパラメータが設定されたA軍とB軍を一万回戦わせてそれぞれの勝率を得ています。
正規分布や誤差分布で調べてみたのですが、さっぱり分かりませんでしたorz
無題
Re:無題
トピ主さんへ
ちょっと意地悪に見えたかもしれませんが、
たしかに質問のされ方があいまいに見えましたので、非常に答えにくいです^^;
というのは・・・
他の方もおっしゃっていますが、「誤差」をどのような意図で考えているのか、
また戦闘の方法が分からず、兵数と命中率だけでは「互角」かどうか判断しづらいです。
「戦闘自体は乱数で・・・」とあったものの、戦闘のどこに、どのような形で乱数による処理を入れているのか分かりませんでした。
パッと見ですと2通り考えられました。
A軍
人数:1000人
銃の命中率:40%
B軍
人数:2000人
銃の命中率:10%
銃の発射(攻撃)は両軍同時に行うものとする。
敵軍に与えるダメージは「自軍の人数×(0~命中率上限%の乱数)」
とする。
最低でも1のダメージを与えることが出来るものとする。(ダメージが1未満となった場合”1”固定)
と・・・
1ターン終了後
A軍人数は1000-(2000×(0~10%))となり最大1000、最少800となる。
B軍人数は2000-(1000×(0~40%))となり最大2000、最少1600となる。
というの(最少人数に減る(=ダメージ最大)で考える)を繰り返すと・・・
2ターン後
A軍人数は800-(1600×(10%))となり最少800-160=640となる。
B軍人数は1600-(800×(40%))となり最少1600-320=1280となる。
3ターン後
A軍人数は640-(1280×(10%))となり最少640-128=512となる。
B軍人数は1280-(640×(40%))となり最少1280-256=1024となる。
4ターン後
A軍人数は512-(1024×(10%))となり最少512-102=410となる。
B軍人数は1024-(512×(40%))となり最少1024-204=820となる。
5ターン後
A軍人数は410-(820×(10%))となり最少410-82=328となる。
B軍人数は820-(410×(40%))となり最少820-164=656となる。
6ターン後
A軍人数は328-(656×(10%))となり最少328-65=263となる。
B軍人数は656-(328×(40%))となり最少656-131=525となる。
7ターン後
A軍人数は263-(525×(10%))となり最少263-52=211となる。
B軍人数は525-(263×(40%))となり最少525-105=420となる。
8ターン後
A軍人数は211-(420×(10%))となり最少211-42=169となる。
B軍人数は420-(211×(40%))となり最少420-84=336となる。
9ターン後
A軍人数は169-(336×(10%))となり最少169-33=136となる。
B軍人数は336-(169×(40%))となり最少336-67=269となる。
10ターン後
A軍人数は136-(269×(10%))となり最少136-26=110となる。
B軍人数は269-(136×(40%))となり最少269-54=215となる。
11ターン後
A軍人数は110-(215×(10%))となり最少110-21=89となる。
B軍人数は215-(110×(40%))となり最少21544=171となる。
12ターン後
A軍人数は89-(171×(10%))となり最少89-17=72となる。
B軍人数は171-(89×(40%))となり最少171-35=136となる。
13ターン後
A軍人数は72-(136×(10%))となり最少72-13=59となる。
B軍人数は136-(72×(40%))となり最少136-28=108となる。
14ターン後
A軍人数は59-(108×(10%))となり最少59-10=49となる。
B軍人数は108-(59×(40%))となり最少108-23=85となる。
15ターン後
A軍人数は49-(85×(10%))となり最少49-8=41となる。
B軍人数は85-(49×(40%))となり最少85-19=66となる。
16ターン後
A軍人数は41-(66×(10%))となり最少41-6=35となる。
B軍人数は66-(41×(40%))となり最少66-16=50となる。
17ターン後
A軍人数は35-(50×(10%))となり最少35-5=30となる。
B軍人数は50-(35×(40%))となり最少50-14=36となる。
18ターン後
A軍人数は30-(36×(10%))となり最少30-3=27となる。
B軍人数は36-(30×(40%))となり最少36-12=24となる。
19ターン後
A軍人数は27-(24×(10%))となり最少27-2=25となる。
B軍人数は24-(27×(40%))となり最少24-10=14となる。
20ターン後
A軍人数は25-(14×(10%))となり最少25-1=24となる。
B軍人数は14-(25×(40%))となり最少14-10=4となる。
21ターン後
A軍人数は24-(4×(10%))となり最少24-1=23となる。
B軍人数は4-(24×(40%))となり最少4-9=-5となる。
のでA軍の勝ちです。
この命中率を乱数で取得してダメージ計算すれば勝利軍が変わることもあるでしょう。
パターン2
銃の発射(攻撃)は両軍同時に行うものとする。
命中率は固定
兵士一人ずつ命中判定を行う。
最低でも1のダメージを与えることが出来るものとする。(ダメージが1未満となった場合”1”固定)
(最少ダメージ”1”、最大ダメージ=現在の兵数となる)
と・・・
1ターンで両軍全滅もありうる(笑)
という感じで勝った負けたを数えていくわけですよね。
A軍の最少ダメージ&B軍の最大ダメージ
A軍の最少ダメージ&B軍の最少ダメージ
A軍の最大ダメージ&B軍の最少ダメージ
A軍の平均ダメージ&B軍の平均ダメージ
で計算してみるとどちらが勝ちやすい(有利)なのかある程度推測できるのではないでしょうか。
そこで、最初の疑問である「誤差」とは何を指すのか?
です。
うーん・・・分かりません(笑)
ちょっと意地悪に見えたかもしれませんが、
たしかに質問のされ方があいまいに見えましたので、非常に答えにくいです^^;
というのは・・・
他の方もおっしゃっていますが、「誤差」をどのような意図で考えているのか、
また戦闘の方法が分からず、兵数と命中率だけでは「互角」かどうか判断しづらいです。
「戦闘自体は乱数で・・・」とあったものの、戦闘のどこに、どのような形で乱数による処理を入れているのか分かりませんでした。
パッと見ですと2通り考えられました。
A軍
人数:1000人
銃の命中率:40%
B軍
人数:2000人
銃の命中率:10%
銃の発射(攻撃)は両軍同時に行うものとする。
敵軍に与えるダメージは「自軍の人数×(0~命中率上限%の乱数)」
とする。
最低でも1のダメージを与えることが出来るものとする。(ダメージが1未満となった場合”1”固定)
と・・・
1ターン終了後
A軍人数は1000-(2000×(0~10%))となり最大1000、最少800となる。
B軍人数は2000-(1000×(0~40%))となり最大2000、最少1600となる。
というの(最少人数に減る(=ダメージ最大)で考える)を繰り返すと・・・
2ターン後
A軍人数は800-(1600×(10%))となり最少800-160=640となる。
B軍人数は1600-(800×(40%))となり最少1600-320=1280となる。
3ターン後
A軍人数は640-(1280×(10%))となり最少640-128=512となる。
B軍人数は1280-(640×(40%))となり最少1280-256=1024となる。
4ターン後
A軍人数は512-(1024×(10%))となり最少512-102=410となる。
B軍人数は1024-(512×(40%))となり最少1024-204=820となる。
5ターン後
A軍人数は410-(820×(10%))となり最少410-82=328となる。
B軍人数は820-(410×(40%))となり最少820-164=656となる。
6ターン後
A軍人数は328-(656×(10%))となり最少328-65=263となる。
B軍人数は656-(328×(40%))となり最少656-131=525となる。
7ターン後
A軍人数は263-(525×(10%))となり最少263-52=211となる。
B軍人数は525-(263×(40%))となり最少525-105=420となる。
8ターン後
A軍人数は211-(420×(10%))となり最少211-42=169となる。
B軍人数は420-(211×(40%))となり最少420-84=336となる。
9ターン後
A軍人数は169-(336×(10%))となり最少169-33=136となる。
B軍人数は336-(169×(40%))となり最少336-67=269となる。
10ターン後
A軍人数は136-(269×(10%))となり最少136-26=110となる。
B軍人数は269-(136×(40%))となり最少269-54=215となる。
11ターン後
A軍人数は110-(215×(10%))となり最少110-21=89となる。
B軍人数は215-(110×(40%))となり最少21544=171となる。
12ターン後
A軍人数は89-(171×(10%))となり最少89-17=72となる。
B軍人数は171-(89×(40%))となり最少171-35=136となる。
13ターン後
A軍人数は72-(136×(10%))となり最少72-13=59となる。
B軍人数は136-(72×(40%))となり最少136-28=108となる。
14ターン後
A軍人数は59-(108×(10%))となり最少59-10=49となる。
B軍人数は108-(59×(40%))となり最少108-23=85となる。
15ターン後
A軍人数は49-(85×(10%))となり最少49-8=41となる。
B軍人数は85-(49×(40%))となり最少85-19=66となる。
16ターン後
A軍人数は41-(66×(10%))となり最少41-6=35となる。
B軍人数は66-(41×(40%))となり最少66-16=50となる。
17ターン後
A軍人数は35-(50×(10%))となり最少35-5=30となる。
B軍人数は50-(35×(40%))となり最少50-14=36となる。
18ターン後
A軍人数は30-(36×(10%))となり最少30-3=27となる。
B軍人数は36-(30×(40%))となり最少36-12=24となる。
19ターン後
A軍人数は27-(24×(10%))となり最少27-2=25となる。
B軍人数は24-(27×(40%))となり最少24-10=14となる。
20ターン後
A軍人数は25-(14×(10%))となり最少25-1=24となる。
B軍人数は14-(25×(40%))となり最少14-10=4となる。
21ターン後
A軍人数は24-(4×(10%))となり最少24-1=23となる。
B軍人数は4-(24×(40%))となり最少4-9=-5となる。
のでA軍の勝ちです。
この命中率を乱数で取得してダメージ計算すれば勝利軍が変わることもあるでしょう。
パターン2
銃の発射(攻撃)は両軍同時に行うものとする。
命中率は固定
兵士一人ずつ命中判定を行う。
最低でも1のダメージを与えることが出来るものとする。(ダメージが1未満となった場合”1”固定)
(最少ダメージ”1”、最大ダメージ=現在の兵数となる)
と・・・
1ターンで両軍全滅もありうる(笑)
という感じで勝った負けたを数えていくわけですよね。
A軍の最少ダメージ&B軍の最大ダメージ
A軍の最少ダメージ&B軍の最少ダメージ
A軍の最大ダメージ&B軍の最少ダメージ
A軍の平均ダメージ&B軍の平均ダメージ
で計算してみるとどちらが勝ちやすい(有利)なのかある程度推測できるのではないでしょうか。
そこで、最初の疑問である「誤差」とは何を指すのか?
です。
うーん・・・分かりません(笑)