今までパワポケ乱数関連で使ってたAn12、Cn12などに関しての記述が長すぎて煩わしかったので、削減
プログラム
今までブログで書いていたコードの「前半部分」にあたるもの。これを下のものに差し替えて使う
原理はすでに計算済みの値をただコピペして、複数の変数に一括で代入しただけ
A, C, M = 0x5d588b656c078965, 0x0000000000269ec3, 2**64 An1,An2,An3,An4,An5,An6=6726279311198226789,8227077990937477593,3641900572492503965,3844884882681883121,12478313692454077717,7891730251820858953 An7,An8,An9,An10,An11,An12=6247073422286906317,7805359175066883297,5838782242981684677,1393589326428787641,9108732868280846589,6276200521548427473 An13,An14,An15,An16,An17,An18=4387246718281112437,4915365748176532009,14384659199153257261,5573804873737629121,510226512578418213,15269244978222762393 An19,An20,An21,An22,An23,An24=14426245091887819357,7360208121106627505,334121770915104213,4928471522990672393,5318500281432508045,11515234365071067809 Cn1,Cn2,Cn3,Cn4,Cn5,Cn6=2531011,8181017474514197682,789582199073780477,759786950760636820,14429455622161994279,884189017989064486 Cn7,Cn8,Cn9,Cn10,Cn11,Cn12=14711288048086509249,2492308521768219112,4091334853373245259,7456084121517757018,13883168044098848325,500639915614930172 Cn13,Cn14,Cn15,Cn16,Cn17,Cn18=14547714921560502831,635532190249570894,10721743100614890889,11350325075819015888,3906310362125231827,10056513866114505474 Cn19,Cn20,Cn21,Cn22,Cn23,Cn24=7247394126583093389,5106247511830856548,14725572874457119031,8067783342602084470,3321623761751495505,6591036316851132088
An25、Cn25の求め方は下のプログラムを参考
参考:今まで使っていた長ったらしいプログラム
線形合同法のパラメータを少しいじって計算するやつをそのまま計算式の形で書いて代入したもの。
新しいプログラムは計算済みの値を一括代入
#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
コメント