« 都市伝説・続き | メイン | 凄く大事な宣言内容メモ。 »

コメント返信の代わりに実験。

久々に数字を弄り倒すとかやってるので色んなこと忘れてました。
## 学生やってたころにこの情熱が出てれば…(笑)

発端は今回の作製結果に納得したい、と言う理由だったのですが、
根拠を出すために色々やってたらこんなことに。
収束させようとも思ってなかったのですけど、ここまで来たら意地が…ね。

ここから先はコメントへの返信+再度の計算実験結果となっています。

>所長殿
コメント感謝です。

(((器用+魅力*2)/3)*0.05+lv+4)*(max(log10(item),1)+(0.1*(max(2-log10(abs(lv-item)),1)*item)

提示頂いた上記式だとlog10(abs(lv-item))部分が多々ぶっ壊れるような。
## log10(0)ってマイナス無限大だったっけ?
## そもそも指数関数とか久しぶりに聞いたなぁ…何年前だろう。
0.1*(2-max(log10(abs(lv-item)),1)*item
こうかな?でもこれだと意図した計算結果じゃないような気もするですね。
(計算結果がマイナスになる可能性があるし。)
log10(0)を0と置くのならなんとなく納得がいくような気がした。
うん、多分そうだろうと勝手に解釈。

正直プログラムする側としてはもっと単純な式にしてると思うんですけどねぇ。
## ソースのメンテとか別ゲームに流用する事とかを考えると。
…あぁ、でもlog10か。確かにありといえばありだ。

後半のmaxじゃなくて1とlog10(差)のminを取って…差が0の時はアイテム補正が倍になって…
そうするとアレがあーなって…おや?

…と、ここまでをコメント欄に書こうと思っていました。
思い立ったがなんとやら。一気に計算式を組んでみます。
最初に使った計算式の結果をごにょごにょして、
都市伝説ボーナスを加えた結果もごにょごにょしてたら以下のような式が完成。

※Excelの関数でごにょごにょしています。
(((器用+魅力*2)/3)*0.05+衣装+4)*(1+0.1*素材強さ)+(2-(MIN(IF(差=0,0,LOG(ABS(差),10)),1)))*素材強さ
(※差=衣装Lv-素材強さ)

…………うわぁ。誤差が大幅に減ったんですけど。

前半:(((器用+魅力*2)/3)*0.05+衣装+4)*(1+0.1*素材強さ)
この部分は今まで予想されていた式をそのまま使用してみました。
ある程度のベースの強さが出てくるけど、何か物足りない、そんなデータです。

後半:(2-(MIN(IF(差=0,0,LOG(ABS(差),10)),1)))*素材強さ
提示された式をヒントにして思いついた式。
(※コメント欄の式提示が無ければlogなんて思い出さなかったです。Thanks!)
log10(10)=1で、log10(0)=-∞(だった気がします。数学真面目に受けて無かったからなぁ)
つまり【LOG(ABS(差),10)】の部分は
レベル差が10→1へと小さくなるにつれて、1から0へ向けてだんだん小さくなっていきます。

でもって、【(IF(差=0,0,LOG(ABS(差),10))】とIF文を噛ませることで
log10(0)の時に値が0になるように仕向けてみました。
さらにその結果と1との最小値をとることで、レベル差が10以上の場合は1に固定しています。
でも実は、log10(1)も0です。困りました。本当はLv差が0の時に0にしたいんですね。
なので、レベル差の絶対値に1足しちゃいました。そうすることで差が0の時にlogが0になります。

結果として得られる値は【2-計算結果(0~1)*アイテム強さ】。
レベル差が小さくなるごとにこの値がアイテム強さの2倍に近くなり、レベル差が広がると1倍に近づく。
ただし比例ではなく、レベル差が小さいうちは値の変化が大きく、大きくなるごとに緩やかに。

以上を踏まえて完成した暫定式。
TRUNC((((器用+魅力*4)/5)*0.05+衣装+4)*(1+0.1*素材強さ)) +
 TRUNC((2-(MIN(IF(差+1=0,0,LOG(差+1,10)),1)))*素材強さ)
器用:魅力=1:4に変えてみました。
2:3とか2:5とか1:5とか試したんですが、この数字が一番誤差が小さいかなとか。
左辺と右辺で別々に切り捨てをしているのも仕様です。やっぱり誤差が略。

この式を用いたファイルはこちら。
1セルに長いの書くと、調整するのが面倒だったので左辺と右辺を分けました。


まだちょっと誤差はありますが(最大20)
下位から上位まで、ある程度結果通りの値が出てきました。

…もう、この辺で終了できるかな?
大体の誤差は一桁だし、二桁の誤差が出てるのってホントに上位素材の作製結果だけだし、
上位の衣装作製持ちなんて限られてるし、そもそも上位の人が上位作製する機会は少ないし…
気が向いたら式に調整を入れていく感じにしよう。


以後不定期連載になると思います。ハイ。
データだけは毎回収集して更新していく予定。
データが増えたらこの話題をまた再浮上させるかも。

都市伝説から始まった調査レポートにお付き合いいただき感謝。
…と言っても三日しか続いてないけどね!これがホントの三日坊主。

コメント

式再考お疲れ様です

…提示した式よく見たら間違ってた!
(((器用+魅力*2)/3)*0.06+lv+4)*(max(log10(item),1)+(0.1*(max(2-log10(abs(lv-item)),1)*item)

2-log10(abs(lv-item)) が 2-log10(abs(lv-item)+3)ですね

仰るとおり、log10では差ゼロの時無限化しますorz
最初は「差がゼロにならなければ良いわけだから」と+1してたんですが
+3ぐらいで一番誤差が縮まるんですよね
平均誤差1.8程、最大誤差15程だったはず

この式形状だと少数以下や細かい変化が大きいので
単純にもう一つボーナス用の項増やして加算というのは理にかなってますね

追記:
今回の暗器作成で丁度強さ10の材料からLv10作成したんですが
それ一件のみで出した式をちょっと改変しただけというのは秘密
http://infinite-being.no-ip.org/~hobby/fi/sample.ods
役に立ちそうに無いですが、計算してたファイルも置いてきますね
ごちゃごちゃしてるのは仕様、表計算ソフトなんて嫌いだー

ぶっ。
このコメントが何故spam扱いになってたんだろう?

取り急ぎコメントは復帰しておきました。
(…迷惑TBは良く引っかかるからたまに空にするクセがあるけど、
 迷惑cmは殆ど引っかからないから見てなかっただなんて…げふんげふん)

コメントを投稿