[抱負]
ダブルクロスの達成値の平均値を求めるプログラムをschemeで書く、です。
昨日やったのが能力値2、技能0、クリティカル値11(クリティカルしない)、エフェクトは使用しないケース。
こんな感じ。
(define (roll-2dice-nocr) (- (apply + (map (lambda (n) (* (/ (- (expt n 2) (expt (- n 1) 2)) (expt 10.0 2)) n) ) '(1 2 3 4 5 6 7 8 9 10)) ) (/ 1 (expt 10.0 2)) ))
で、この解き方を拡張して、
能力値X、技能0、クリティカル値11(クリティカルしない)、エフェクトは使用しないケース
を求める。
実はこのプログラムの2のところを関数の引数として抜き出すだけでいけるはず。
このプログラムの2のところは(ダイスのリストのところは別)昨日の説明の、面積の求めるところの2だから、ダイスを3つに増やした場合は体積になるだけなはず。
(…四次元以上の容積?の名称は知らないのでアレだけど、まあ理屈はあってるはず)
で、ソースコードにするとこんな感じ。
(define (roll-dice-nocr x) (- (apply + (map (lambda (n) (* (/ (- (expt n x) (expt (- n 1) x)) (expt 10.0 x)) n) ) '(1 2 3 4 5 6 7 8 9 10)) ) (/ 1 (expt 10.0 x)) ))
実行結果はこんな感じ。
gosh> (roll-dice-nocr 1) 5.400000000000001 gosh> (roll-dice-nocr 2) 7.140000000000001 gosh> (roll-dice-nocr 3) 7.974 gosh> (roll-dice-nocr 4) 8.4666 gosh> (roll-dice-nocr 5) 8.79174 gosh> (roll-dice-nocr 6) 9.021594000000002 gosh> (roll-dice-nocr 7) 9.1919574 gosh> (roll-dice-nocr 8) 9.322686659999999 gosh> (roll-dice-nocr 9) 9.425695013999999 gosh> (roll-dice-nocr 10) 9.5085658074