こんばんは。
何故かUIにポストされているので、担当外ですが 雑談として コメントします。
メインプログラマのK氏に確認した所、
XIVでは、有名な乱数アルゴリズムから3種を、用途によって使い分けているそうです。
当然、全てサーバ側で処理をしていますし、シード(乱数の種)は起動ごとに異なります。
なので、Ltzさんの疑問についてですが「そういう問題が起こる実装ではありませんよ」
というお答えになります。
たしかに、昔のゲームでは特定操作でパターン化できる実装や、
それを逆用した攻略が可能なタイトルはありましたが、
昨今のゲームではそういう実装方法は殆ど無いと思います。たぶん。
それでも、XIVに限らずゲーム中の確率(乱数)処理は、
昔から今に至るまで、プレイヤーに「疑惑の目」を向けられ続けています。
私の考えは 「いやー、殆どの場合は 単なる偶然 ですよ」 なのですが、
それだけでは納得行かないと思うので、ちょっと語ってみようと思います。
+ + +
これは、XIVに特定した話ではなく、プログラムの乱数が疑われやすいのは
どうしてなんだろう?というお話です。
※もちろん、本当にバグだったケースも少なくありませんが…
まずは、要点だけざっくりと。
a) XIVや昨今のゲームが使っている標準的な乱数プログラムは、実用上「正しい乱数列」を生成する。
b) 人が把握出来る範囲の回数では、「正しい乱数列」だからこそ偏りが生じる。
c) 私達の脳は、「偏り」を異常・特異点として検出する能力に長けているため「正しい乱数」を異常に感じる。
a~cを個別に補足説明します。
まずは a) の「乱数列」を出力するプログラムについて。
XIVに限らず 昨今のゲームで使われる乱数アルゴリズム(正しくは擬似乱数)は、
数学者やコンピュータサイエンスの凄い人が考案し、
様々な分野で検証され、実用されている鉄板のアルゴリズムを使っています。
一例として、メルセンヌ・ツイスタという乱数アルゴリズムの周期性の説明を抜粋します。
「周期が2^19937-1で、623次元超立方体の中に 均等に分布することが証明されています」
はい。全くわかりませんが、大丈夫です。
乱数アルゴリズムというのは、こういった純粋数学の成果によって成り立っている分野です。
少なくとも私達利用者は、生成される乱数列は正しく十分実用的だ、という事を前提にできれば十分です。
★乱数アルゴリズムと、ゲーム実装で生じた過去の問題事例を知る人は、
上記で触れていない事が気になると思います。一応、末尾に蛇足の説明を加えています。
次にb)の「正しい乱数列」について、です。
乱数には、一様乱数や正規乱数といった分布パターンの異なる種類がありますが、
試行回数が増えるほど、理想の状態に収束していきます。
逆に、試行回数(サンプリングの数)が少なければ、乱数列には偏りが生じます。
そして、私達人間が把握できる程度の、ゲーム中の試行回数程度では、
乱数には偏りが生じるのが「正常」なのです。
つまり「乱数に偏りがあるのは、おかしい」という前提が間違っているのです。
勿論、数百万回とか、数億回の試行の果てには、均一に無作為な分布に収束し、
偏りはなくなります。
これを、人間が「実際の出来事を観測」して体感するのは、ちょっと無理があります。
そのため、限られた試行回数で発生した偏りを目にするたびに、
「やっぱ、偏ってるって! 絶対に!」と声をあげてしまうわけですが、
「そうだね、偏ってるね。」としか言いようがありません。
最後に c)の、私達の「認識」の誤謬について。
私達人間は、様々なことを瞬間的に判断したり、直感したりできます。
脳みそが得意で、コンピュータが苦手といわれる分野ですね。
一方で、その能力には不得手な部分もあり、そこを突くと手品や詐欺に嵌めることができます。
この、脳が周囲の出来事を認識して判断する穴を突き、誤った判断や誤解をおこしやすい
パターンを「認知バイアス」と呼びます。
確率に生じる代表的な認知バイアスが、Gambler's fallacy (ギャンブラーの誤り)
と呼ばれるものです。
これは、
相互に関わりあうことのない出来事を、人が時間軸に沿って複数観察した場合に、
過去の出来事が 未来の出来事の結果に影響をおよぼす事を期待したり、
生じた結果に対して因果関係を理由に納得、または違和感を感じる錯覚です。
コインを投げて5回連続で表が出ようとも、6回めに表/裏のでる確率は
それぞれ変わらす50%です。
しかし、直感は「こんどこそ」と感情的な期待値の補正をかけてしまい、
結果が表なら「ありえない」と感じ、裏が出たら「やはりな!」と感じやすいものです。
これが認知バイアスです。
b)で述べた、おかしくない事なのにオカシイと直感してしまうのは、
確率が、脳が直感的に期待する因果関係とは、ぜーんぜん関係ない振る舞いするからです。
※と、断言形式で書いてますけど、所詮本の受け売りなのでご注意ください。
認知バイアスは、まるで人間の認識能力のバグみたいですが、
人が生き残る上で獲得した、緊急時に効率よく判断する仕組みなんだそうです。
この認知バイアスというのは厄介ですが非常に面白いので、
ご興味のある方にはこういった包括的な書籍もあるのでオススメします。
+ + +
以上、
私達がゲームで出会う確率が、なんかオカシイぞ!と思いがちなのはどーしてなのか考えてみた、でした。
おわり。
蛇足:乱数アルゴリズムの所で触れなかった事
乱数アルゴリズムの中でもコスト対効果が高く採用例の多い方法に、
線形合同法がありますが、このアルゴリズムは範囲の取り方で
結果に大きな偏りが生じるのは、実装者には良く知られた問題です。
事実、この関数の用い方をミスって、サンプル数が増えるほど
偏りが増していくゲームがありました。
なので「よく知られた一般的な手法だから!」いう事が、
正しさの証明になるわけではありません。
また、乱数列が正しく生成されても、アプリケーション実装が
その値をどのように用いるか次第で、最終的な結果に妙なパターンが生じる事も当然あります。
ですから、長々と述べた話は「XIVの各種確率計算の結果の正しさの証明」ではありません。
それはわかっています。ですから冒頭に述べた通りこのポストの後半は完全に雑談で、
「XIV中の確率は間違いないのか?」という問いに対する答えでは無い事をご了承ください。