技術情報 その1

技術情報 その1

MD5カード

ステータスの算出方法

入力したキーワードををMD5でハッシュ化し、先頭48ビット(16進×12文字)を以下のようにステータスに割り当てて計算しています。
※ 日本語の全角文字の場合、文字コードはSJISとして扱います。

項目 攻 撃防 御命 中  運  HP 素早さ
MD5値(16進) eddce0 351a01
MD5値(10進) 237220224 53261
948889 2912010
[mb5btl.com] のステータス

星(★)の計算方法

ステータスに使用されるハッシュ値を10進化して合計値を算出し、その値を基準にして星の数を決めています
分布の適性値はよくわからなかったので、とりあえず合計値のとりうる範囲(0~1530)を7等分して星の数を確定するようにしました。

戦闘

戦闘のパターン(与えるダメージ数や回避の有無)もハッシュ値で決めています。
ランダム要素はないので何回やっても同じ結果になります。

レアリティ

ステータスの各値の分布は0~255の均等分布です。
それぞれのステータス単体で見ると、どの値の出現率は同じです。
中心極限定理によると、独立かつ同一分布に従う確率変数の和は、規模が大きくなるにつれて正規分布に近づくそうです。
すなわち、合計値が高いステータス(低いステータス)ほど出にくくなり、ほどよいレアリティを出すことができます。
理論上、最強のステータスが出る確立は約1兆分の1です。
現代のPCのCPUを使えば、総当たりで最強コードは簡単に見つけることは可能だと思いますが、意味のある言葉で最強のキーワードを見つけるのは難しそうです。

文字コード

ハッシュ計算の元となるキーワードの文字コードはSJISもしくはUTF-8です。基本的に、日本語はSJISからハッシュ値を計算し、それ以外の言語はUTF-8からハッシュ値を計算します。
※ 以前は、日本語のページと他言語(韓国語等)のページが分かれていたので、それぞれで別の文字コードを使用していました。そのため同じキーワードでも入力するページが異なると出力結果が変わるという問題が発生していました。今回はこの問題を解決し、どの言語でも一つのキーワードから生成されるステータスは1種類となるように、ソースを修正しました。