#5637

柱であるべき数式


web制作


01時過ぎてしまっているので寝てしまいたいところですが書きます。
このところ、Web制作系のモチベーションがかなり復活してきています。
とはいえ新しい何かをイチから組み上げるほどではないので、専ら既存の何かをいじるのみ。

というわけで今日は帰ったら特設サイトの根幹部分をいじろうと思い、
日中はそのことを頭の中で整理しつつ過ごしていたので帰りはわくわくしていたのですが、
実際にはたったひとつの数式を作り上げるためにアフターファイブの大半を費やしていました。
実はこの度、ランキングサイトである特設サイトの、
中核部分である総合ランキングの計算式を2007年以来12年ぶりに改訂しようと思いついたのです。
その経緯はいろいろありますが、一言で言えば12年前当時が想定していたプレイヤー数を
今や大幅に超えてきてしまったからというのが主な理由です。
そこで、新作が発表されるかもしれないE3の前に、これを新しくしておいて
総合ランキング周りも整理しておきたいなと。

数式自体は日中の休憩時間などでちまちまスマホに書き留めていたものがあったので
それを点数表化すれば早くも完成。
ということでいきなり実装部分から着手していたのですが、
進めていくうちに、本当に基礎数式はこれでいいのかという思いに至りました。
というのも、2007年版はおおむね参加者20人程度を想定した数式でした。
そして今回自分が休憩時間に作った試作品は、50人程度を想定しています。
現時点の最多参加人数が49人なので、まあ今がピークだろうという想定なのですが、
果たしてそれでいいのか、と。
今後50人、60人と増えていかない保証なんてどこにもないではないか。
そんなときにまた改訂するなんていうのはあまりにも面倒。
ということで、51人以上が来たときの対応策を考えることになったのでした。

基礎数式はいわゆる二次関数になっていて、値は右上に行くほど加速度的に増えていきます。
この場合はX軸は参加者数、Y軸は順位に当たるのですが、
順位が上がるほど爆発的にポイントがあがるのは、まあ想定通りの動きであるとしても、
参加人数が増えるほど(同じ順位なのに)爆発的にポイントが増えるのはおかしい。
もともと基礎数式は参加者が増えるランキングほど重要度が増すという意味を込めて、
参加者数が増えるほど全体のポイントが増えていくようにはなっていましたが、
それが許容できる数値におさまるのはせいぜい50人まで。
この50人をピークに、可能ならそこから先だけゆるやかな上昇になるような関数を導きたい。

しかし自分の文系オツムでは限界だったので、
今回はいろいろな人に助けを求めることにしました。
その結果、実に明瞭な答えをくれた人がいました。
詳細な数式については割愛しますが……いやー、頼るべきは他人の力だと久々に思いましたね。
あと、やっぱり数学って面白いしもう一度勉強したいと改めて思いましたね。
あれだけ悩んでいたことがこうもあっさり解決してしまうなんて、数学できる人ってすげえ。
おかげさまで、本当に綺麗なグラフが完成しました。ほれぼれするくらい綺麗です。
ちなみに数式はこちら。

あとはこれをプログラムに組み込んでデータベースに反映するまでは自分の仕事。
本当は今日それをしたかったのですが、
数式問題で一日潰れてしまったので明日にお預けということになりました。
というわけで明日は寄り道せずにこれの続きをする予定。

コメントを残す