操作
リファクタ #440
完了ランダム譜面の生成方法について
リファクタ #440:
ランダム譜面の生成方法について
説明
- 現状の調査
操作
説明
実装に着手しました。
feature/440
NoMurioshiRandomizer の nextInt(0) バグ修正・無理押し判定ロジックの集約・PatternModifier.create の switch 整理・シード生成のエントロピー強化(Java 25 の RandomGenerator 活用)を行う。モード削除は行わず、リプレイ互換のためシャッフル列の RNG 挙動は維持する。対応が完了しました。
ランダム譜面生成(pattern パッケージ)の現状調査を踏まえたリファクタ。シード生成のエントロピー強化、再現性バグと例外バグの修正、無理押し判定の集約、create の整理を実施。リプレイ互換のためシャッフル列のRNG挙動は維持。
Math.random()*65536*256(≈2^24) から PatternSeed.generate()(Java 25 RandomGenerator で非負63bit) に刷新。同一ランダム譜面の再来(衅突)を抑制。>=0 契約・-1 センチネルは維持。LanePlayableRandomShuffleModifier(RANDOM_PLAYABLE) が Math.random() 直書きでシードを無視し再現不可だったバグを修正(java.util.Random(getSeed())、丸めバイアスも除去)。NoMurioshiRandomizer の nextInt(candidate2.size())(=nextInt(0)) による IllegalArgumentException を candidate.size() に修正。PmsMurioshi に集約(振る舞い不変)。PatternModifier.create の switch を helper 抽出で整理、chartOprion→chartOption、陳腐化TODO削除。PatternModifier.java / Randomizer.java / LaneShuffleModifier.java / PatternSeed.java(新規) / PmsMurioshi.java(新規) / RandomPatternGenerationTest.java(新規) 計6件。.\gradlew.bat test : 成功(BUILD SUCCESSFUL、新規4テスト含むフルスイート緑)playinfo.pattern / PatternModifyLog)を再有効化して生成と再現を脱結合するのが本質的(別チケット候補)。