本記事では、パワポケ12 最強のドゥームズデイを作る方法と武器合成メカニズムなどで紹介しているような強い武器の乱数を探索するためのPythonコードを紹介します。
武器ではなく装備、また他作品などへの流用はご自由にどうぞ。
プログラム
同じ処理をする部分を関数化した方が綺麗になるとは思いますが、とりあえずさっさと正確に動くものを作って実機で役立つような結果重視で書きました。
私用のコードを書き直したので無駄な機能が残っていたり条件分岐の長さもきれいな書き方はあるはず。ただ即効性を重視しました。
※追記:コピペ時にインデントがズレてしまっていたので修正しました
#12裏でステータスアップ武器 A = 0x5d588b656c078965 C = 0x0000000000269ec3 M = 2 ** 64 b=0 bb=0 bb2=0 b3=0 bb4=0 b5=0 b6=0 b7=0 b8=0 b9=0 b11=0 b12=0 b13=0 b14=0 b16=0 b17=0 b18=0 b19=0 #1:付加能力の乱数列の合計 n=6 nn=30 for i in range(0,n): b += A**i % M An=A**n% M Cn=(C*b)% M for i in range(0,nn): bb += A**i % M Ann=A**nn% M Cnn=(C*bb)% M #2:攻撃判定 An1=A Cn1=C An2=A**2%M Cn2=Cn1*(A+1)%M An3=A**3%M Cn3=Cn2*(A+1)%M for i in range(0,6): b6 += A**i % M An6=A**6% M Cn6=(C*b6)% M for i in range(0,7): b7 += A**i % M An7=A**7% M Cn7=(C*b7)% M for i in range(0,8): b8 += A**i % M An8=A**8% M Cn8=(C*b8)% M for i in range(0,9): b9 += A**i % M An9=A**9% M Cn9=(C*b9)% M for i in range(0,11): b11 += A**i % M An11=A**11% M Cn11=(C*b11)% M for i in range(0,12): b12 += A**i % M An12=A**12% M Cn12=(C*b12)% M for i in range(0,13): b13 += A**i % M An13=A**13% M Cn13=(C*b13)% M for i in range(0,14): b14 += A**i % M An14=A**14% M Cn14=(C*b14)% M for i in range(0,16): b16 += A**i % M An16=A**16% M Cn16=(C*b16)% M for i in range(0,17): b17 += A**i % M An17=A**17% M Cn17=(C*b17)% M for i in range(0,18): b18 += A**i % M An18=A**18% M Cn18=(C*b18)% M for i in range(0,19): b19 += A**i % M An19=A**19% M Cn19=(C*b19)% M #3:命中判定 for i in range(0,3): b3 += A**i % M An3=A**3% M Cn3=(C*b3)% M for i in range(0,5): bb4 += A**i % M Ann4=A**5% M Cnn4=(C*bb4)% M #4:SP判定 for i in range(0,5): b5 += A**i % M An5=A**5% M Cn5=(C*b5)% M #5:乱数探索部分。時間h、探索数N、攻撃のvalue12と命中のvalue34 for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): N = 200000 X_n = 0 X_nn = 0 X = h * (2 ** 16) + m * (2 ** 8) + s + 1 #(nn-n)個の乱数値の和をvalue、攻撃判定の2つの和がvalue12、命中判定の2つの和がvalue34 value = 0 value12=0 value34=0 for i in range(0, N): X = (X * A + C) % M #6:MP判定、攻撃判定、命中判定、SP判定、付加能力判定 if X/M < 0.02 and ((An6 * X + Cn6) % M)/M < 0.5 and 0.6<((An7 * X + Cn7) % M)/M<0.9 and ((An8 * X + Cn8) % M)/M > 0.8 and ((An9 * X + Cn9) % M)/M >0.8 and ((An11 * X + Cn11) % M)/M < 0.5 and 0.6<((An12 * X + Cn12) % M)/M<0.9 and ((An13 * X + Cn13) % M)/M > 0.8 and ((An14 * X + Cn14) % M)/M >0.8 and ((An16 * X + Cn16) % M)/M < 0.5 and 0.6<((An17 * X + Cn17) % M)/M<0.9 and ((An18 * X + Cn18) % M)/M > 0.8 and ((An19 * X + Cn19) % M)/M >0.8: print(10000 * h + 100 * m + s, i+1, X/M) print("★", value) break
力器用素早さアップの武器を粘るための乱数を探すコード。(ただし重複するものも混ざっています)
後ろから4行目の条件式のパラメータをいじれば器用素早さ精神、または力器用素早さ精神など、いろいろできます。
参考
線形合同法において初期乱数シードが\(X_{0} = x\)で生成規則となる漸化式が\(X_{n+1} = A X_n + C\ (mod\ M)\)の場合、一般項は次の通りになります。
\(X_{n} = A^n x + C\displaystyle\sum_{i=0}^{n-1} A^i \ (mod\ M)\)
最初のAn12, Cn12などを求める部分では上を使っています。
nが大きくなる時は計算時間を短縮する方法がありますが、パワポケの初期シードパターンの少なさと乱数消費行動と回数にバリエーションがあまりないので、ひとまずこれで。
実行結果
乱数生成回数が200000、探索する時間が86400通りで実行時間は数時間(あんまり覚えてない)でした。
力、器用、素早さアップの武器
左から起動時間、MP判定乱数の順番(= 実際の乱数消費回数に1を足した値)、MP判定に使う乱数値(0-0.02)です。
これを実機で実行すれば力器用素早さが大幅アップする武器ができるでしょう。(ただし重複に注意)
起動時間が一番左の数字、乱数消費回数を(左から2番目の値 – 1)回にして武器を作ればOK。
★のところはプログラムを使いまわしたときの古い機能の名残です。気にしないでください。
実行する前に、合成の原理をパワポケ12 最強のドゥームズデイを作る方法と武器合成メカニズムでおさらいし、付近の乱数値の様子や調整過程の確認のために【改良版】パワポケの内部乱数観測器をPythonで実装してみたのコードを使うといいでしょう。
10231 140911 0.004687508168016643
★ 0
12623 194052 0.005631080351219733
★ 0
13435 34604 0.017845898143290198
★ 0
14416 42759 0.018909697735495754
★ 0
14634 69373 0.013516976081408128
★ 0
21341 50606 0.003796760287884992
★ 0
23555 159435 0.0013011331483682909
★ 0
24029 33896 0.010383668260129876
★ 0
24542 42203 0.006622048999943693
★ 0
30419 137995 0.002328578189192424
★ 0
32536 88653 0.0029795467499103604
★ 0
34306 64351 0.01811009309816423
★ 0
34710 160514 0.0041835896551676716
★ 0
35716 58913 0.0007433324900801715
★ 0
40247 97713 0.013995292611058271
★ 0
40648 101477 0.016856023360220185
★ 0
41299 97284 0.01339354013466624
★ 0
43819 152505 0.01641778522580527
★ 0
43908 118979 0.011606030255696096
★ 0
51521 138155 0.010408915938338351
★ 0
51913 113152 0.002744585223362365
★ 0
52958 79530 0.004586845395032355
★ 0
60234 125906 0.011021374051242297
★ 0
62521 93475 0.00577053229926878
★ 0
64743 135948 0.008677086848889
★ 0
64942 22186 0.010873552571407832
★ 0
65404 142912 6.517600379188734e-05
★ 0
70199 124011 0.011361116587116327
★ 0
71511 95680 0.004580327012070865
★ 0
73134 176994 0.012689466905819135
★ 0
73255 9744 0.012939298573350286
★ 0
73551 21584 0.018448603282203994
★ 0
73610 72376 0.0151831097991145
★ 0
73945 73265 0.010771567387006515
★ 0
74930 1048 0.007160762552687344
★ 0
75338 48222 0.015521903704464038
★ 0
75733 161646 0.007804714078722361
★ 0
85649 109651 0.012728111820131324
★ 0
95437 111374 0.018343797243216352
★ 0
101845 87841 0.010718046729668265
★ 0
102319 153791 0.015009572189120319
★ 0
103632 195896 0.013459397965313586
★ 0
113035 76861 0.006254920204183123
★ 0
114057 96277 0.014296427150912887
★ 0
115657 97031 0.00979870708207273
★ 0
121300 150283 0.005436904530367038
★ 0
125606 2933 0.0027036077300500575
★ 0
133814 104482 0.013466073045441555
★ 0
134632 32122 0.014917179308594606
★ 0
142042 85800 0.017787229533891374
★ 0
144531 63769 0.001549471819212722
★ 0
151616 86091 0.019346398241965716
★ 0
151844 161628 0.013998213312268408
★ 0
154317 11625 0.016740718588689925
★ 0
160253 59962 0.015080060953530757
★ 0
161857 37586 0.005954011587542405
★ 0
164011 128870 0.017670602529845085
★ 0
171758 112199 0.00016523044371482068
★ 0
171919 141271 0.017992245781563762
★ 0
172239 110453 0.0027972120168623642
★ 0
173526 114902 0.012439268925417595
★ 0
174304 20310 0.005661446049886455
★ 0
174316 156090 0.016483686277757013
★ 0
175129 197286 0.00878669291383703
★ 0
175431 121919 0.01407150855099172
★ 0
180205 126524 0.006724536180487917
★ 0
184742 42791 0.009826939806047454
★ 0
185540 198374 0.008359591013790867
★ 0
191336 92375 0.005605656956319572
★ 0
192226 117349 0.004652991112206895
★ 0
200141 180514 0.019169540815187347
★ 0
200518 184334 0.00597615110453254
★ 0
202119 195805 0.0064728325789916875
★ 0
202131 147410 0.01792765060624482
★ 0
202141 30688 0.017702177744608034
★ 0
204348 64046 0.0027774626580179718
★ 0
205157 115147 0.010926692046966007
★ 0
214834 54345 0.006384896399113528
★ 0
220941 169023 0.007649705806460435
★ 0
222431 120860 0.005012552596625571
★ 0
224534 7666 0.009526225594972609
★ 0
224710 82484 0.016068619496620237
★ 0
225955 185963 0.004961326218842488
★ 0
232756 41097 0.016266212212135724
★ 0
235205 130421 0.004762454536533325
★ 0
235536 123653 0.008787708094743055
★ 0
これだけのデータがあれば筆者が全部やるのは大変なので、福袋的な要素もかねてぜひお試しください。
器用、素早さ、精神アップの武器
730 191391 0.01460069048878854
★ 0
1956 16819 0.002899818997778558
★ 0
4609 67697 0.01797425297224658
★ 0
14634 69373 0.013516976081408128
★ 0
21840 130317 0.015361613947390147
★ 0
23216 3110 0.013994700140490148
★ 0
23555 159435 0.0013011331483682909
★ 0
24029 33896 0.010383668260129876
★ 0
32357 67665 1.942642081171421e-05
★ 0
32536 88653 0.0029795467499103604
★ 0
35716 58913 0.0007433324900801715
★ 0
40648 101477 0.016856023360220185
★ 0
43133 33710 0.019587005260509077
★ 0
52106 101995 0.015923850944401532
★ 0
54237 66904 0.013064281442740895
★ 0
62401 62815 0.01080838786371065
★ 0
64743 135948 0.008677086848889
★ 0
71511 95680 0.004580327012070865
★ 0
73121 185171 0.009554579011291236
★ 0
73255 9744 0.012939298573350286
★ 0
73321 17789 0.009794877437832071
★ 0
73551 21584 0.018448603282203994
★ 0
73945 73265 0.010771567387006515
★ 0
73999 148980 0.016852979306309048
★ 0
81151 8466 0.018620636167423793
★ 0
85248 172270 0.012013520472350922
★ 0
91856 41530 0.016786682806491104
★ 0
93650 158233 0.010440896852402513
★ 0
101526 85567 0.007973680110769581
★ 0
101802 158404 0.014034471761596225
★ 0
111420 11660 0.005633668538329551
★ 0
112250 39406 0.0004043457971801743
★ 0
114057 96277 0.014296427150912887
★ 0
115829 20512 0.010727055249160688
★ 0
123220 138534 0.004637223861474419
★ 0
130446 52610 0.013031051077479608
★ 0
130736 59273 0.013957204158907461
★ 0
133702 29675 0.00798280611465533
★ 0
134556 29658 0.015082079092027708
★ 0
135332 193116 0.008185835656599121
★ 0
135850 170492 0.008512377164839734
★ 0
141618 101937 0.008830404942431178
★ 0
151123 173287 0.019465490736833523
★ 0
152316 147065 0.0009732595095768024
★ 0
152347 199818 0.001636398200873392
★ 0
154317 11625 0.016740718588689925
★ 0
160142 71811 0.009466485128916262
★ 0
160253 59962 0.015080060953530757
★ 0
164011 128870 0.017670602529845085
★ 0
165303 9129 0.010524386873718386
★ 0
171038 26614 0.00846378748705277
★ 0
172239 110453 0.0027972120168623642
★ 0
172746 173006 0.010802381934745928
★ 0
173099 103245 0.010514849388536923
★ 0
174316 156090 0.016483686277757013
★ 0
180205 126524 0.006724536180487917
★ 0
180212 185569 0.012799706634442024
★ 0
184742 42791 0.009826939806047454
★ 0
185540 198374 0.008359591013790867
★ 0
190202 157721 0.010725524951830085
★ 0
191336 92375 0.005605656956319572
★ 0
192108 69420 0.01565532768241456
★ 0
194332 69990 0.015356734283353891
★ 0
200503 3129 0.010920258813967222
★ 0
201416 48597 0.016030820510734692
★ 0
202119 195805 0.0064728325789916875
★ 0
202131 147410 0.01792765060624482
★ 0
203319 122941 0.0006316370894318762
★ 0
203812 149353 0.01995047912572043
★ 0
203902 77350 0.011164018145194911
★ 0
204348 64046 0.0027774626580179718
★ 0
205621 28089 0.006641872084082726
★ 0
211646 31893 0.012986573748276302
★ 0
220941 169023 0.007649705806460435
★ 0
222427 125682 0.017896608710926964
★ 0
231623 185803 0.004819494562245143
★ 0
235217 168940 0.017998383779311414
★ 0
力、器用、素早さ、精神アップの武器
730 191391 0.01460069048878854 ★ 0 1251 74066 0.005968795584797519 ★ 0 1956 16819 0.002899818997778558 ★ 0 2137 35115 0.00999407883894557 ★ 0 4609 67697 0.01797425297224658 ★ 0 5100 181748 0.018990010481002087 ★ 0 10231 140911 0.004687508168016643 ★ 0 10436 39598 0.016828787661729027 ★ 0 10809 32753 0.0038811776151058846 ★ 0 12623 194052 0.005631080351219733 ★ 0 13435 34604 0.017845898143290198 ★ 0 14416 42759 0.018909697735495754 ★ 0 14634 69373 0.013516976081408128 ★ 0 21341 50606 0.003796760287884992 ★ 0 21840 130317 0.015361613947390147 ★ 0 23216 3110 0.013994700140490148 ★ 0 23417 199768 0.003965295562366096 ★ 0 23555 159435 0.0013011331483682909 ★ 0 24029 33896 0.010383668260129876 ★ 0 24542 42203 0.006622048999943693 ★ 0 24601 10646 0.007922680727182801 ★ 0 30419 137995 0.002328578189192424 ★ 0 32357 67665 1.942642081171421e-05 ★ 0 32536 88653 0.0029795467499103604 ★ 0 33723 46059 0.002882555404694896 ★ 0 34306 64351 0.01811009309816423 ★ 0 34710 160514 0.0041835896551676716 ★ 0 34857 142129 0.0006734481064340121 ★ 0 35716 58913 0.0007433324900801715 ★ 0 40247 97713 0.013995292611058271 ★ 0 40648 101477 0.016856023360220185 ★ 0 40924 166225 0.00711658880100038 ★ 0 41299 97284 0.01339354013466624 ★ 0 41710 136325 0.00022998396274816972 ★ 0 41715 99956 0.012934970832406861 ★ 0 43133 33710 0.019587005260509077 ★ 0 43819 152505 0.01641778522580527 ★ 0 43908 118979 0.011606030255696096 ★ 0 51521 138155 0.010408915938338351 ★ 0 51913 113152 0.002744585223362365 ★ 0 52106 101995 0.015923850944401532 ★ 0 52958 79530 0.004586845395032355 ★ 0 54237 66904 0.013064281442740895 ★ 0 54353 82459 0.018450345943460133 ★ 0 60234 125906 0.011021374051242297 ★ 0 60647 77233 5.3502875810482e-05 ★ 0 61037 108427 0.00443992597197503 ★ 0 62401 62815 0.01080838786371065 ★ 0 62521 93475 0.00577053229926878 ★ 0 62936 187775 0.007684217674582428 ★ 0 64743 135948 0.008677086848889 ★ 0 64942 22186 0.010873552571407832 ★ 0 65404 142912 6.517600379188734e-05 ★ 0 70199 124011 0.011361116587116327 ★ 0 71511 95680 0.004580327012070865 ★ 0 73024 120339 0.0022268887111656036 ★ 0 73121 185171 0.009554579011291236 ★ 0 73134 176994 0.012689466905819135 ★ 0 73255 9744 0.012939298573350286 ★ 0 73321 17789 0.009794877437832071 ★ 0 73551 21584 0.018448603282203994 ★ 0 73610 72376 0.0151831097991145 ★ 0 73945 73265 0.010771567387006515 ★ 0 73999 148980 0.016852979306309048 ★ 0 74930 1048 0.007160762552687344 ★ 0 75010 184407 0.019802168767249724 ★ 0 75338 48222 0.015521903704464038 ★ 0 75733 161646 0.007804714078722361 ★ 0 80013 161627 0.011392837156831223 ★ 0 80845 36154 0.017070813769827844 ★ 0 81151 8466 0.018620636167423793 ★ 0 85137 4947 0.016747246087879204 ★ 0 85248 172270 0.012013520472350922 ★ 0 85649 109651 0.012728111820131324 ★ 0 91856 41530 0.016786682806491104 ★ 0 92552 76919 0.011259906204810674 ★ 0 93650 158233 0.010440896852402513 ★ 0 95437 111374 0.018343797243216352 ★ 0 101402 47907 0.013284621388620112 ★ 0 101526 85567 0.007973680110769581 ★ 0 101802 158404 0.014034471761596225 ★ 0 101845 87841 0.010718046729668265 ★ 0 102319 153791 0.015009572189120319 ★ 0 103632 195896 0.013459397965313586 ★ 0 104120 17807 0.01730171265828707 ★ 0 104516 49271 0.01626398762571906 ★ 0 111420 11660 0.005633668538329551 ★ 0 112250 39406 0.0004043457971801743 ★ 0 113035 76861 0.006254920204183123 ★ 0 114057 96277 0.014296427150912887 ★ 0 115657 97031 0.00979870708207273 ★ 0 115829 20512 0.010727055249160688 ★ 0 121300 150283 0.005436904530367038 ★ 0 123220 138534 0.004637223861474419 ★ 0 123834 124304 0.007143961402084449 ★ 0 124855 48642 0.015980930513180756 ★ 0 125606 2933 0.0027036077300500575 ★ 0 130446 52610 0.013031051077479608 ★ 0 130736 59273 0.013957204158907461 ★ 0 133702 29675 0.00798280611465533 ★ 0 133814 104482 0.013466073045441555 ★ 0 134556 29658 0.015082079092027708 ★ 0 134632 32122 0.014917179308594606 ★ 0 135332 193116 0.008185835656599121 ★ 0 135850 170492 0.008512377164839734 ★ 0 141618 101937 0.008830404942431178 ★ 0 142042 85800 0.017787229533891374 ★ 0 144531 63769 0.001549471819212722 ★ 0 145407 31687 0.0077741966563260176 ★ 0 151123 173287 0.019465490736833523 ★ 0 151616 86091 0.019346398241965716 ★ 0 151844 161628 0.013998213312268408 ★ 0 152316 147065 0.0009732595095768024 ★ 0 152347 199818 0.001636398200873392 ★ 0 152745 68734 0.006097524073845497 ★ 0 154001 143301 0.01586851059265651 ★ 0 154213 70416 0.005027639535635791 ★ 0 154317 11625 0.016740718588689925 ★ 0 160132 59310 0.01808883604730355 ★ 0 160142 71811 0.009466485128916262 ★ 0 160253 59962 0.015080060953530757 ★ 0 161857 37586 0.005954011587542405 ★ 0 164011 128870 0.017670602529845085 ★ 0 165303 9129 0.010524386873718386 ★ 0 170556 33398 0.012175101328303154 ★ 0 171038 26614 0.00846378748705277 ★ 0 171317 120964 0.018735918920084027 ★ 0 171758 112199 0.00016523044371482068 ★ 0 171919 141271 0.017992245781563762 ★ 0 172239 110453 0.0027972120168623642 ★ 0 172746 173006 0.010802381934745928 ★ 0 173099 103245 0.010514849388536923 ★ 0 173325 141123 0.0006037478306566589 ★ 0 173526 114902 0.012439268925417595 ★ 0 174304 20310 0.005661446049886455 ★ 0 174314 102202 0.011895615517025697 ★ 0 174316 156090 0.016483686277757013 ★ 0 175129 197286 0.00878669291383703 ★ 0 175431 121919 0.01407150855099172 ★ 0 180042 105116 0.005085424154359053 ★ 0 180205 126524 0.006724536180487917 ★ 0 180212 185569 0.012799706634442024 ★ 0 183133 111055 0.00913986381025753 ★ 0 184099 177698 0.009226578441599303 ★ 0 184742 42791 0.009826939806047454 ★ 0 185540 198374 0.008359591013790867 ★ 0 190202 157721 0.010725524951830085 ★ 0 191336 92375 0.005605656956319572 ★ 0 192108 69420 0.01565532768241456 ★ 0 192226 117349 0.004652991112206895 ★ 0 193356 133346 0.002986170932251562 ★ 0 194332 69990 0.015356734283353891 ★ 0 195047 187160 0.002977414804091165 ★ 0 200141 180514 0.019169540815187347 ★ 0 200503 3129 0.010920258813967222 ★ 0 200518 184334 0.00597615110453254 ★ 0 201416 48597 0.016030820510734692 ★ 0 202119 195805 0.0064728325789916875 ★ 0 202131 147410 0.01792765060624482 ★ 0 202141 30688 0.017702177744608034 ★ 0 203319 122941 0.0006316370894318762 ★ 0 203812 149353 0.01995047912572043 ★ 0 203902 77350 0.011164018145194911 ★ 0 204348 64046 0.0027774626580179718 ★ 0 204812 14816 0.00429679900502948 ★ 0 204939 76159 0.010820037251145477 ★ 0 205157 115147 0.010926692046966007 ★ 0 205621 28089 0.006641872084082726 ★ 0 211646 31893 0.012986573748276302 ★ 0 212221 136206 0.012166642074072418 ★ 0 213621 37328 0.0036047364335989062 ★ 0 214834 54345 0.006384896399113528 ★ 0 214899 82537 0.019101758939172302 ★ 0 220521 142036 0.01181045430932747 ★ 0 220941 169023 0.007649705806460435 ★ 0 221254 29996 0.007896157501233944 ★ 0 222427 125682 0.017896608710926964 ★ 0 222431 120860 0.005012552596625571 ★ 0 223614 130184 0.018408643580503363 ★ 0 224534 7666 0.009526225594972609 ★ 0 224710 82484 0.016068619496620237 ★ 0 225955 185963 0.004961326218842488 ★ 0 231623 185803 0.004819494562245143 ★ 0 231742 156948 0.007345599584169362 ★ 0 232756 41097 0.016266212212135724 ★ 0 235205 130421 0.004762454536533325 ★ 0 235217 168940 0.017998383779311414 ★ 0 235536 123653 0.008787708094743055 ★ 0
コメント
1956 16819 0.002899818997778558
をフレイムイーターで試しました。
攻撃131 命中71 素早さ10 精神10という結果になり大変驚いています!
引き続き他の乱数も試せていただきます!