バラつき具合はテキトーな値を掛けて調整し、望みの平均値を足してズラします。1f);とかしてみましょうか。マイナスはいらないので絶対値を取りました。多いのはゼロ付近だろうということで、何も足さずに使っています。-1から1に入る確率がだいたい7割くらいです。-3から3に入らない確率が0.3%くらいあります。そのへんが最大値かな、という気分になります。時間の方は長くて3秒、大抵は0秒付近、ということで悪くない感じです。どれくらい平均から外れているかを表す値です。平均を50とし、標準偏差分外れる度に10足したり引いたりします。この例で言えば、666ピクセルの距離は偏差値70、ということになります。東大行けそうな印象ですよね。100f;とすれば、100点なら偏差値50、110点で60、120点で70、となります。120点はなかなか出ないでしょうし、130点が出たら宝物って感じですね。先程のグラフでは、最大値が4.3でした。偏差値は90ということになります。いう雰囲気だということですね。現実の学力は完全に正規分布というわけではないのですが。タップの件はまだ不満です。いうことは、「ほぼほぼドラッグになってしまう」ということです。このままでは難しいものがあります。なると1000ピクセルの距離は絶望的に出なくなります。標準偏差の4倍以上離れる確率は15000分の1くらいです。偏差値90は1万人に1人もいないということです。5倍ともなれば200万分の1くらいで、もう出ません。偏差値100ですから。宇宙が終わっても出ないくらいの確率になります。別の分布が必要ですね。対数正規分布さあ、ここで対数正規分布です。簡単に言えば、正規分布で出てきた値で、何かを累乗します。NormalDistribution());「正規分布を累乗するのに何故対数?」と思うかもしれませんが、逆です。「対数を取ると正規分布」の意味ですね。「が」を補うとわかりやすいでしょう。ここでは感覚がつかみ易いように10を累乗しています。10の0乗で1、1を返せば10、2を返せば100になります。85%の確率で10ピクセル以内、となります。対数正規分布のグラフはこんな感じです。下の方に集まっていて、上の方はどこまで伸びるかわからない感じです。最大値まで入るようにグラフを描くとこうなります。数が少なすぎて見えませんが、右端にもデータがあるのです。ほとんどは下の方に集まっています。画面の上の方に統計量が出ていて、平均値が1.2なのに最大値が20を超えています。限りなく小さくなっていきます。完全に0にはなりませんが、ほぼ「0が最小値」と考えて良いでしょう。この分布を使ってドラッグ距離とタップ時間を決めているわけです。いい分布はあるでしょうが、「とりあえず」としては上出来でしょう。わかりますが、この分布はお金が絡む問題で良く出てきます。ある時点でみんな1万円持っている1年ごとにそれぞれの人は何%か減ったり増えたりするという状態で放っておくと、だいたい対数正規分布になります。すごいことになり、普通の人の何倍何十倍というお金になります。試しに、ずっと10%だった人とずっと1%だった人を比べてみましょうか。1.5倍30倍の差がついてしまいました。2%確保するか0.1%で放っておくかでも結構差はつきます)。プログラムでシミュレーションしたのが以下です(RandomWalkボタンを押します)。最初はみんな同じ額なんですが、どんどん差が開いていきます。上の方はどんどんお金が増えてすごいことになっていくのがわかるはずです。だいたいこんな感じでして、少数の大金持ちはすごいことになっている状況がよくわかります。実際お金のような「人間が絡んだ現象」に多く見られます。少数の上位者がケタ外れの値を持ちます。社会が対数正規分布に従うからでしょう。1位と2位では何倍も収益が違ってしまうのです。いう恐怖と戦わねばならないわけで、まったくもって恐ろしいですね。いうことで、デカい奴をたまたま見つけるとすごいことになるわけです。少数の超お金持ちが平均を引っぱり上げてしまうからです。これは年収が対数正規分布していて、平均が上にズレているからかもしれません。ほとんどは赤字で、数個のビッグタイトルが利益を独占しているのです。中央値を取る必要があります。それぞれ1.27、1.00とかなりズレています。その原因は、10とか20とかを叩き出しているごく少数のサンプルです。この例では最大値は22.8で、フツーの人(=中央値)の20倍を超えています。もって社会の縮図ですね。ありそうな感じの人は300万でした、というような話になります。中央値が記載されていますね。だいたい同じ感じのズレです(10年前の統計なので今の中央値はもっと低そうですが)。予測やテストデータの生成に使えます。それっぽい感じになるのではないかと思います。ある時間ゲームをした時の増え方は掛け算的になるはずです。予測も簡単ですし、テストデータも作りやすくなります。対数正規分布になると予測できそうです。これを試すのがいいでしょう。対数正規分布に近い現象である必要はありません。それでもそれっぽい値を作るのには役に立ちます。待ち時間を対数正規分布にすると良いと思います。いう現実によくある状況を簡単な式で表現できます。おわりに今日のは技術の話というよりは、与太話ですね。日常生活でも便利です。対数正規分布の三つです。考えると、対処がしやすく、プログラムで表現したり予測したりすることもしやすくなります。いうことを感覚で把握しておくと、利用価値がぐっと上がります。偏差値で考えるとわかりやすい、と言うことならそれも良いでしょう。こんな便利なものを学力にしか使わないのはもったいないことです。一様分布を足しまくると正規分布、というのも重要な知識です。いう場合の挙動は正規分布になるわけです。最初全部1にして、ランダムな値毎フレーム足していった場合のグラフはこうなります。あっというまに正規分布になりますね。ランダムにパーティクルを動かした際の挙動、などはだいたい想像がつくことになります。間違いではないでしょう。うちの娘は幼児の頃は背が突出して高かったのですが、あっさり平均値になってしまいました。身長は正規分布に従うことが知られています。その「桁外れ」になるべく努力を重ねるのもいいでしょう。能力では二番と大差なくても、全然違う名声やお金を手にできるかもしれませんよ。使えば近似でなく正規分布を求められます。乱数を12回呼ぶよりも速度も良いでしょう。今回はこれと近似を選べるようにしてあります。コードはこんな感じです。MaxValueが入ってる時は計算が必要。速度がどうでも良ければ片方を捨ててしまっても大丈夫な気はします。毎回計算してCosかSinのどちらかを返せばいいでしょう。-0.5から0.5までの乱数を12個足すことに相当します。標準偏差というのは分散の平方根です。「出た値から平均を引いたものの二乗、の合計」ですね。出た値をそのまま二乗すれば分散です。この乱数の分散の平均値はいくつでしょうか。それには、分散を-0.5から0.5まで積分すればわかります。x^2を積分するとx^3/3ですね。引いて1/12となります。積分の幅が0.5-(-0.5)=1なので、このままこれが平均値です。1個あたり分散が1/12で、12個足すと分散も12倍になって1になります。標準偏差はその平方根なので、1です。読んで知り、ちょっと感動しました。調べれば頻繁に出てくるのですが、私の数学力では根拠がわからなかったのです。考えることを放棄していたことを恥ずかしく思います。いうゲームがありました。このゲーム、ダメージがサイコロで決定されるので、バラつきがすごいのです。攻撃一回あたりサイコロ1個という武器があるとします。1から6の一様分布ですね。これじゃ全然予測が立ちません。弱いうちは攻撃回数が少ないので毎回がバクチで、運が悪いと一瞬で殺されます。ゲームが進んでくると攻撃回数が増えて、正規分布に近づきます。平方根を取って標準偏差にすると4.8。予測が立つようになります。ゲームが進むにつれて一撃死する確率が上がってきて、やはり気を抜けば死ぬのですが。年とともに腕が上がって安定するのと並行して、育児や健康などで謎の負荷がかかって気が抜けなくなるのと似ています。ゲームは人生の縮図です。このように、分布のデザインによってゲームデザインに特徴を与えることもできるかと思います。ドラクエでもバギ系はやけにバラつくということがありました。プログラマとして参加していても、デバグやツール作り、さらにはAI作りなどに役立つことと思います。(1)月別アーカイブ検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。