UOの乱数について

*はじめに*
*モンデインコインを振る*
*結論*
トップへ戻る



*はじめに*


■ はじめに
UOの乱数は不自然な乱数で、同じ値が連続し易い、といわれます。
つまり、同じ確率が出易くなり成功や失敗が連続して起こり易い、ということです。

よく引き合いに出される例としては、
・魔法110でも8連続でEV召喚失敗することが頻繁にある。
青インゴットの精製は、1個ずつ精製して成功した後に残り全部をやるとうまくいく。
・3連続強化失敗の後、3連続強化成功する。
・・・などなどです。

んじゃ、不自然な乱数とは一体なんなのかというと、
UO内にある各種のデータ(時計、キャラID、場所等)から作り出された偽の乱数であり、
あるデータが一定になると、その分同じ値が連続して出易くなるという推論をよく聞きます。

サーバ内部的に一瞬止まると、前のデータが引き継がれるから同じ確率が出る、とか
大規模MMOであるUOは処理を軽くするため、そのような手法によって乱数を生成する、とか
この推論の趣旨はなかなか説得力があります。

それでは、どうなのかということで、自力でできる範囲で確かめてみようと思いました。

「あるわけねぇじゃん!」「血液型の性格判断みたいなものだろ!?」と、 思われる方もいるかもしれませんが、
万が一不自然な確率だった場合、強力(でもないか)な武器になり得るということで、御容赦下さいませ。

*2004・12・9追記*
UO内での検証とは別に、偏りなんてないな〜、という結論になりました。
間の検証は飛ばして、「結論」部分からお読みくださいませ。



*モンデインコインを振る*


■ モンデインコインって何?
昔に配られた記念品で今ではレアとなっています。
相当な数が出回っているため、価値としては安めです。
と、そのような背景は、レア系のサイトや総合情報系のサイトにもあるのでそちらを参考にして下さい。

このコイン、Wクリックで「サーペント」「アンク」のどちらかをジャーナルに出力します。

わざわざこれを使ったのは、無論振るだけで良いの手軽さもありますが、
結果が2択だから、結果が明瞭になるということ、
おそらく確率は半々だろうから、確率の収束もし易い、ということと、
内部的な乱数の使用が1回だろう、ということです。(サイコロだと2つ振られてしまう)

コインというか玉のような感じ。 ←モンデインコイン


■ 判断基準
※わかりにくいです、わからなければ太線だけ読んで下さい。

UOの乱数が正しいものなら、
前の結果には影響を受けずに次の結果を出すはずです。
つまり、1回目がサーペントだろうがアンクだろうが、
2回目は本来のサーペントが出る確率とアンクが出る確率で結果を出します。
この場合、過去の結果は未来の結果に影響を与えません。

UOの乱数が正しくなく、ある種の状況によっては偏った結果が出ることもあるなら、
1回目の結果が2回目の結果に影響を与えます。
例えば、1回目がサーペントなら2回目は本来のサーペント出現率より上昇する、
1回目がアンクなら2回目は本来のアンク出現率より上昇する等、
過去の結果は未来の結果に影響を与えることから、
要は、過去の結果から未来の結果を知ることが出来て、よりオイシイ結果が得られる、ということです。

もし、正しくない乱数であったとしても、
1回目の結果は2回目ではなく3回目以降に影響するかもしれませんし、
同じ結果が連続して起こるのではなく、逆の結果が次に起こり易いという状況も考えられますが、
まずは、正しくない乱数であるなら、連続して同じ結果になり易い、という仮定に限定させて戴きます。


■ 第1回目
○=サーペント、×=アンクです。

振った状況は、休日の午後3時頃にFニュジェルンで30分程掛けてまとめて振った。
言葉をジャーナル出力する以外他の行動は無し、他PCが画面内に入ったことは無し。

総試行回数=1000回
○出現数=474回(47.40%)
×出現数=526回(52.60%)
前の結果が○だった時に次が○であった確率=47.47%
前の結果が×だった時に次が×であった確率=52.57%
※実際の結果はこちらです。

*第1回目コメント*

あー、全然変わりませんね・・・。
このデータからは、前の結果は関係なく、本来の結果が出ているという結論が得られます。
つまりは、UOの乱数は正しそうです。

いきなりやる気が無くなりましたが、モンデインコインは裏表が半々じゃないのかもという、
別の興味が湧いてきたので、最低もう1回ぐらいはやることにします。

また、体感の話になりますが、実際の結果をパッと見た感じどうでしょう、
連続しているものが多いような印象を受けませんか?
個人的には、振っている間は連続した結果の印象が強く、「偏ってるぜ!」と思っていました。
そして、振り終えた後にテキストファイルでざっと見た印象も、連続した結果が多いと感じました。

もしかしたら、連続していると感じるのは、万人に共通した錯覚なのかもしれません。



*結論*


■ 結論
多分・・・いや、ほぼ確実にUO内の「確率の偏り」はありません。
このページの「はじめに」で、確率の偏りがあるかもしれない根拠を、
色々述べましたが、恥ずかしい話、全部的外れでした。

ここから先は、全然UOと関係ない話になるので、
興味のある方のみ御覧下さい。
また、私の理解度も関係サイトを眺めた程度のものなので、
この先の話を鵜呑みにしないようにお願いします。

***【以下、擬似乱数の話です】*******************

世の中には「擬似乱数」なるものがあるらしいです。
それはなにかというと、「実際は次に来る数は決まっているが、その周期が
長いため、人間からはあたかも乱数のように見える」数値の列のことです。

んで、この数値の列は、
擬似乱数@=複数の初期設定値を公式で加工」
擬似乱数A=複数の初期設定値と擬似乱数@を公式で加工」
擬似乱数B=複数の初期設定値と擬似乱数Aを公式で加工」
・・・と、このようにしてどんどん生成されます。
つまり、初期値をいくつか設定すれば、後は公式に1回通せば
ひとつの擬似乱数が生まれるという訳です。

この擬似乱数の、乱数としての正しさなのですが、
ぶっちゃけ、人間に周期が知覚できるような数では有りません。
もちろん、初期値の数や公式にもよりますが、ほとんどは天文学的な数のパターンになります。

例えばUOサーバーが乱数を上記のような公式を使って作るとすると・・・

「その日の管理者の抜け毛の本数」・「たまたま開いた本のページ数」・
「テレビに映っていた時刻」・「サイコロ3つ振って出た数」・「頭にふと浮かんだ数字」・・・
・・・などを朝メンテの時に初期値として公式に入れてしまえば、後は一切手を触れることなく、
プレイヤー達に1日分の「あたかも乱数のように見える」擬似乱数を配信することが出来ます。

要するに、プレイヤー達が乱数を使用する際に、
いちいちその時の時刻とかプレイヤーの座標とかを抽出する必要は全く無いのです。

また、”擬似乱数”でググればわかりますが、プログラムとも密接な関わりのある技術なので、
オンラインゲーム以前から、大量の乱数を生成・使用する技術は確立していたと思われます。

以上から、UOの乱数の偏りは気のせいであると、結論付けました。
(「全然違うよっ!」という点があれば、是非BBSへ助言お願いいたします)