ドラゴンクエスト掲示板> 現行ログ> No.1305

ドラゴンクエスト掲示板(質問回答・情報の交換投稿・要望・間違い指摘)

No.1305-0 右弐 [リンク] 2013/06/22(Sat)02:51
[DQ5]関連研究での引用のお礼:スロット完全攻略
管理人様へ
PS2版ドラクエ5での「スロット完全攻略」のページで公開された技について、その後も研究がすすめられていました。
昨年になりますが、私もその研究内容を公開するにあたり、該当のページの乱数の利用と、原理の説明としてリンクを貼らせていただいています。
事後報告になってしまい恐縮ですが、改めてお礼申し上げます。
2012年には5000回転までの出目乱数が解析され、大当たりは31個まで判明しています。
古い返信7件が閉じています(全件表示)
No.1305-8 右弐 2013/06/29(Sat)01:07
コメントありがとうございます。勉強になります。

1.全ての目が出るのに必要な回転数
すべての出目が出そろうと保証できることは延々ないと思いますので、ここでいう回転数は「期待値」という意味でよろしいでしょうか。
そうすると、そこまで正確に推測しなくてもいいかと思い、
 log(n+1) <  Σ1/k  < 1 + log(n)
からだいたい n・log(n) と考えると、miyaさんの2^24と合うなと判断していました。
もしや、コンピュータの乱数列だと「すべての出目が出そろうと保証できる」ことがありうるのでしょうか。

2.乱数の循環
miyaさんのおっしゃる通り、循環すると理解しました。
seedとして投げ込むデータ型が有限なので、どんな生成ルーチンを使おうが関係ないですね。
データの型として考えると、なぜmiyaさんが2の累乗で規模を推定しているのか、やっとわかりました。頭の中でいろいろつながりました。
データ型で考えるなら、2バイト、2^16でループする可能性もなきにしもあらずかと思います。1時間仕事なので、少し調査してみようと思います。

3.2分おきというのはなぜでしょうか
現状での5000回転までの出目表は25000乱数、13分程度に相当するので、10分に1回のぞく、という頻度でもヒットさせられると思ったのですが、2分というのは、別の何か意味がある値なのでしょうか。


4.メーカーの意図について
最初にご返信いただいた時の指摘についてですが、私は以下のように考えています。
・リールの絵柄 : スーファミと同じなので、調整の形跡はない
・乱数の初期がランダムでない :
 ローテーションのボスで、2つの行動から選ぶ仕様にもかかわらず、
 1ターン目の行動のみが確定しているという現象があります。
  雪の女王:打撃  イブール:輝く息
 意図的にこんな調整をする理由は思い浮かびません。
 スロットも、これと同じ系統の現象に分類していました。
 また、スロットは、戦闘を起こすと見たこともない出目になりますが、
 これは初期乱数が正しくセットしなおされたと解釈しています。
・1/30秒という速度 : 1/60秒というフレームレートを基準としているだけ
・開始時期の調整 : 
 miyaさんの真意を知って改めて考えると、 ロード直後の、19→58→123 の当たりは
 すべてパターン1なので、ただ回しているだけで1/5の確率で3連発の当たりを目にします。
 他の多くの当たりと比較しても、確かに偶然にしては出来過ぎていると私も思います。

まとめると、私は「開始時期の調整」だけはメーカーの意図として行われたかもしれないと思っています。
No.1305-9 miya 2013/06/29(Sat)11:16
>1について
全ての目が出るのに必要な回転数は数学的に期待値を考えただけで、目が出揃うことが確定するようなものではありません。

例えばサイコロの目6種を全て出すのに必要な試行回数の平均は次のように求められます。
6/6+6/5+6/4+6/3+6/2+6/1=14.7回

簡単に解説すると、まだ出てない目が出現する確率の逆数の合計です。
仰るように正確に求める必要はないことですが、参考にするための理論値として16^5種類を計算してみると1500万あまりで2^24に近い値であることが分かります。

>3について
5000回転は乱数2万5千個のことなんですね。
乱数5000個だと思っていたので2分と考えましたが10分間隔でいいと思います。
それにしても随分と調べたもんですね。
それだけあれば規模の調査もかなり期待できる気がします。

>その他
そう言えば図柄配列がSFCと同じというのは当時にも聞いた覚えがありました。
変更が加えられたのは出目の生成方法だけですね。

戦闘中は攻撃の当たり外れや会心、ダメージや回復の振り幅や状態変化などの随所に乱数が使われます。
敵の行動はパターンが移行する際に確率選択としてその乱数の続きが使われると考えるほうが現実的だと思います。
1ターン目の行動が固定されてる敵は乱数の使用箇所が決まっているのではなく確率選択を行ってないだけではないでしょうか。

戦闘後の出目については調べてみないと実感が湧きませんが、例えば戦闘に入ると乱数のカウントが数万プラスされるとか、通常時は+1ずつだけど戦闘中は+200になるなど原因になりそうなことは様々考えられます。
ただカウントがリセットされるよりは既知データの先に進んでしまってる可能性のほうが高い気がします。
No.1305-10 右弐 2013/06/29(Sat)14:20
>>1について
やっぱり出揃う保証は無理ですよね。ありがとうございます。
「まだ出てない目が出現する確率の逆数の合計」というのは理解しています。その先の計算は適当にサボっていいのか、という確認でした。たとえば、サイコロだと、
6/6+6/5+6/4+6/3+6/2+6/1 = 6×(1/1+1/2+1/3+1/4+1/5+1/6) = 6×Σ1/k (k=1から6)
とでき、このΣ1/kの部分の数値として、「幅1、高さ1/1,1/2,1/3,・・・,1/6の6本の棒グラフの面積の和」と考えるなら、関数 y=1/x と y=1/(x+1) のグラフの面積は積分で処理できるので、nが非常に大きいなら推定に使えます。

>>3について
やはりそうでしたか。ありがとうございます。
5000回転までは、そうこさん・御茶麒麟さん、の両氏が調査されました。miyaさんが仰るように、このデータ量は他の調査を加速させる足がかりになっています。
私が発見したことだと、乱数の速度は1/30秒ではなく、待ち時間の環境において少なくとも3パターンあります。ですがこれもデータが増えてなければ気付かなかったと思います。
ロード→戦闘→スロット、とした場合の出目も、5000回転までにはヒットしないことを確認しています。

>戦闘について
調査で以下の2つは確認しています。
・単に乱数が消費されていると考えるには消費量が多すぎる
・ロード→戦闘→すぐ逃げ→スロット、とした場合の出目同士を比較した場合に、再現は稀
このため、私はseedの再設定のような「横のズレ」が濃厚かと思っていました。

さらに、戦闘がリセットのかわりになるのではないかとも思い、延々と「戦闘→すぐ逃げ→スロット→・・・」とループして調査しましたが、これは35回やってもその出目同士で再現は起きていません。
もしseedが再設定されるとした場合には、少なくともその値は256種類以上はありそうだと結論づけています。

今、私が有力だと考えている仮説は
・乱数は2つある 「乱数1:時間で進む」と「乱数2:戦闘などで進む」
・それぞれ、規模は2バイト=2^16
・スロットの出目は、1,2ともに影響する
の3点セットです。もちろん2バイトという量的な推定は適当ですが、これより多いと、現実的に調査は難しいかなと思っています。
前回の書き込みの「2^16を仮定して1時間くらいの調査」というのは、上記の意図に基づいています。

今回、miyaさんとやり取りさせていただいて、乱数の規模の推定がいかに重要か痛感しました。戦闘後の問題も、これ抜きには議論できないですね。
今後も面白い動きがあれば、報告させていただきます。

>このスレッドに関して
私が書いている「スロット乱数制御研究」という研究ログのページから、ここにリンクを貼りたいと思っているのですが、直接だとまずいでしょうか?
特に規模について話は、ここを見るのがわかりやすいと思いますので、参照が容易な形にできればうれしいと思っています。
No.1305-11 miya 2013/06/29(Sat)17:34
seedを考慮に入れるのは何か手掛かりがつかめてからの話のように感じられます。
乱数2^16個でseedが256種類の構成でも、乱数2^24個の1列のみでseedなしの構成でも同様な動作は可能だと思います。
この例なら前者のseedの順送りと後者の2^16番プラスはほぼ同等と考えられます。
先ずは外堀が判断できるような手掛かりがほしいですね。

リンクなどは掲示板もサイト内でも自由にされて構いません。
データの流用も特に気に留めてないので使えるものがあれば使ってください。
No.1305-12 右弐 2013/06/29(Sat)20:07
仰る通り、戦闘後の現象はどちらのモデルでも解釈できるます。
ここも乱数規模を特定できれば自動的に解消される問題なので、少し乱数規模の実験をしようと思います。
2^16付近は、残念ながらループが無かったです。10分おきに6回調べました。

リンクのほうご返答ありがとうございます。こちらのスレッドに直接張らせていただきます。
No.1305-13 miya 2013/06/30(Sun)01:05
2^16はちょっと小さ過ぎるでしょうね。
2^20を調べることもあるかと思いますが、その際は100万などの10進数のキリ番も視野に入れてみてください。
新たな発見があることを期待してます。
※このスレッドへの書き込みは終了しました