Skip to content

apmnnn/mhxx-rng

Folders and files

NameName
Last commit message
Last commit date

Latest commit

adc5ac3 · Mar 7, 2026

History

11 Commits
Mar 7, 2026
Mar 7, 2026
Mar 7, 2026
Mar 7, 2026

Repository files navigation

mhxx-rng

Open In Colab

目次

  1. はじめに
  2. お守りの決定方法
  3. 乱数生成式、乱数の仕様
  4. 関数の説明
  5. スナイプ入門1
  6. スナイプ入門2
  7. スナイプ実践
  8. 考察など
  9. 天運の錬金、マカフシギ錬金について
  10. ランクについて
  11. 今後の展望
  12. 注意など
  13. 有名なお守り

はじめに

これはMHXXでのお守りスナイプ用の乱数解析ツールです。

Googleアカウントを持っていなければ取得し、上のOpen in Colabを開き実行してください。

このプログラムはPython 3.12.12での動作を確認しています。

スナイプ入門1

まずは乱数位置が非常に近い「連撃4痛撃5スロット3」の入手を目指しましょう。

この説明ではSwitch版、ダウンロード版の本体保存を使います。

3DS版やSD保存、カセット版でも恐らく可能です。

用意するもの

・タイマー (小数第二位まで測れるもの)

・各試行の結果を記録するメモ

ここではアプリ「タイマー & ストップウォッチ Plus」を使います。2つのタイマーの切り替えが出来るなら何でもいいです。

まずはココット村でセーブをしておきます。

ホーム画面でゲームMHXXを選択すると同時にタイマースタート。タイマーを見ながら1秒に4回のペースでAを押します。

「continue」を押すと同時にタイマーストップ。その後はAを連打してセーブデータを選択。

一直線にマカ錬金屋に向かい、会話をBでスキップして最速でお守りを投入。

あとは適当なクエストをこなして錬金結果を見ます。

ここでは窮地4回復量2スロット0が引けたとします。

次にプログラムを開きます。

最初に1st,2nd,3rdのセルを実行してください。

そして、1番上のセルの一部を

p = parameter('窮地',4,'回量',2,0,'マカ')

for num1 in range(10000):
  search(*p)

と書き換えて実行してください。

このお守りは1725フレーム目のお守りであることが分かります。

次にセルを

p = parameter('窮地',4,'回量',2,0,'マカ')

around(1740,60)

for num1 in range(0):
  search(*p)

と書き換えて実行してください。 1740フレーム目のお守りとその前後60フレームのお守りが全て表示されます。

これを基準に自分の平均値を探っていきます。

ホームに戻りゲームを終了し、上のお守りの鑑定を10〜30回ほど繰り返してください。

以下が注意点・コツとなります

タイトル画面で1秒に4回のペースで押すことで、(Switchの場合)13.00秒付近でcontinueを押せます。

continueを押すと、非常に不安定な量の乱数が進行します。

しかし、近いフレームであれば、同じ乱数位置に着地します。

なので、数フレームのズレは気にしなくてもいいです。

また、continueを押した時の乱数の進行量の多寡は押すタイミングの早さとはあまり関係がありません。

より早い段階でcontinueを押したにも関わらず、より多くの進行量、より後ろの乱数に着地することもあるということを心に留めておいてください。

また、村に出てからの動きは、とにかくマカ錬金までの経過フレーム≒乱数進行量を一定化することを狙いとしています。

最速で錬金すればブレは少なくなるはずです。

総じて、乱数のブレを少なくすることを意識して行ってください。

タイマーを押し、ゲームを開始してcontinueを押すまでの間はゲーム画面を見ずタイマーのみを見た方が一定化しやすいと思います。

事前にストップウォッチなどを使い、ブレを少なく丁度の時間で止める練習や、30F、15F等の感覚をタイマー無しで測る練習をしてもいいかもしれません。

スナイプ入門2

10〜30回ほど錬金を行い、ブレの存在や自分の基準を見つけられたら、次は連撃4痛撃5スロット3を狙っていきます。

まず、最初の基準を1717としてみます。

次に、セルを

p = parameter('連撃',4,'痛撃',5,3,'マカ')

for num1 in range(10000):
  search(*p)

と書き換え実行してください。

連撃4痛撃5スロット3は4723フレーム目にあることがわかりました。

セルで

watch(4723 - 1717)

を実行します。

1m 40s 6f、つまり、1分40.20秒

これがタイトル画面で待つ時間になります。

次に、セルで

p = parameter('連撃',4,'痛撃',5,3,'マカ')

around(4723,60)

for num1 in range(0):
  search(*p)

と実行します。

連撃4痛撃5スロット3の周りのお守りが表示されます。

最初と同様に、ホーム画面でゲームを選択と同時にタイマースタート、1秒に4回のペースでAを押します。

そして今度はcontinueを押し、最速でセーブデータの上でAを押すと同時に1個目のタイマーを停止、2個目のタイマーを始動させます。

ここまでゲーム画面を見ずにタイマーのみを見て行います。

2個目のタイマーが1:40.20になるタイミングでAを押し、タイマーストップ。セーブデータをロード。

最初と同様に最速でマカ錬金をします。

これを何度か繰り返してください。

恐らく最初は0.数秒目的のお守りとずれていると思います。

数回やってズレを体感したら、ロードするタイミングを微調整してください。

最初は20〜30回ほどでスナイプできると思います。

continueを押すタイミングを間違えている事がタイマーから分かれば、その時点でやり直すことを勧めます。

途中で少し操作をミスしたり、経路やマカ錬金屋に話しかける距離を間違えたと思ったら、臨機応変にタイミングを調整してみてください。

スナイプ実践

スナイプに成功したら連撃4痛撃5スロット3を5個集めるまで繰り返してください。

ブレの安定化に慣れてください。

慣れれば5〜7回に1度ほどの確率でスナイプできます。

5回のスナイプでデータは集まっているはずなので、今度はその時間を基準にします。

次に、自分の欲しかったお守りをsearch()、watch()、around()してください。

痛撃6達人10スロット3なら296260フレーム目。

連撃4痛撃5スロット3(4723フレーム目)との差は2h 41m 57s 27f、2時間41分57.9秒。

6つ前のお守りがスキルを二つ持つので孤立お守りではありません。

連撃4痛撃5スロット3の時と同様にcontinueを押し、連撃4痛撃5スロット3の待ち時間に先程計算した時間を足したものだけ待ちます。

待っている間はゲームを充電しておき、Switchなら自動スリープをオフにしておきましょう。

どの時間にゲームを覗けばいいのか計算しておくといいです。

マカ錬金を行う所も前回と同じです。

注意など

熱による負荷や、バックグラウンドでのゲームソフトのダウンロードなどにより、フレームの進行が遅れる可能性があります

(1秒で30F未満しか経過しない、など)

他のソフトをダウンロードをしないようにしたり、夏場に放置する場合は扇風機などで本体の温度を適切に下げた方が良いかもしれません。

また、知らない間に本体や他のゲームの更新データがダウンロードされ、負荷になる可能性を考えると、機内モードをオンにしておいた方が良いかもしれません。

このプログラムは完全にゲームの動作を解析して作っている訳ではないので、再現不足により実際のゲームの結果とは異なる結果が表示されるかもしれません。 また、プログラムを組むに当たっての人為的ミスが無い保証もありません。 自己責任で利用してください。

Colabでスナイプの為の乱数の計算を終えた後は、右上の▼から、ランタイムを接続解除して削除を選び、接続を切っておいてください。

Colabでは出力が5000行を超える場合、古い方から切り捨てて表示されます。多くの結果を出力したい場合は、小分けにするなどして工夫してください。

より高度な機能を使いたい場合、関数の説明を読んでください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published