Created
December 12, 2016 15:16
-
-
Save sskwwskwww/474429a0ed1a74fe33189a9e793c1103 to your computer and use it in GitHub Desktop.
SM孵化最下位bit列から元の乱数列を計算する奴
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Module Inv | |
Private ReadOnly invlist() As ULong = {&HAF630C9B9374B832UL, &H5FC1AAB2E39C4434UL, &HBD3BDA1869A675F1UL, &H1085296E28C0425AUL, &H2C23BA331C3BE6FCUL, &H31C7020BDEBC413DUL, &H69E216E9BBD26EC9UL, &H224AEB96ADD37392UL, &H7E22D643E79CD92EUL, &H2A335AD5F6E13D06UL, &HDEB7E9E63117D9ABUL, &H2EC75958BA057AD8UL, &HE769C722C8A18CB0UL, &H2CD358B8CFE73970UL, &H53582C1F25385E43UL, &H2DEB94943D604BB2UL, &H347150FC3CB5F0FEUL, &H2D6C077E2A7A2373UL, &H2FF951D9B993151UL, &H2D2343FDB9BAB82AUL, &H2F551181AE422688UL, &H5D237E3D6F7DCB49UL, &HDECC07E80CC01041UL, &H30C48335335FEB7FUL, &HA925A653684A5D01UL, &H4B79F55CC2563B50UL, &H16F3746C77F1BD4DUL, &H668CDA849CD2E78CUL, &H1E6349B08F0545C8UL, &H40160FF7C6DB891DUL, &HFA7967F7689DD586UL, &H32F3516717ECA59FUL, &H4A3130D70705F98CUL, &H7DA1B0D3E68B56C3UL, &HA827F3266CCF66A6UL, &H26822282FAD804BUL, &HEC6D5D890574B761UL, &H71441643F3F1F14EUL, &H90C1691508849DD0UL, &H4C66DA6DF0F8D52DUL, &H342643143AFBB98CUL, &H68D2E0330E2D5AB6UL, &H18913AE950077189UL, &H3869A1AD6FF21DBDUL, &H4314746FD0E3D31CUL, &H3D18DB386EE00690UL, &H8B313D3B9506DFBFUL, &HAB10C8B50A4DEE1UL, &HD26ADC5840EA9CA6UL, &H15223BA0BFA7AF5FUL, &H5B1D11B300831BD9UL, &H4565CEF9CF39E9A9UL, &H5675B6334942AFE4UL, &H4237CE9AA242A736UL, &HB6373C3E47CC7F7UL, &H2E35B759CB0A7AF5UL, &H8128290B400B43A1UL, &H304DBF0B31290B88UL, &HF4E3ED4C8F5BEDDCUL, &H357CE0F104B37FABUL, &H49DC908D9BA36CA6UL, &H36B366315D351E07UL, &HD30A49F0BE13CA27UL, &H67D115472AB57723UL, &H7A77B430D34CEBE2UL, &H210A52DC518084B5UL, &H584774663877CDF8UL, &H638E0417BD78827AUL, &HD3C42DD377A4DD92UL, &H4495D72D5BA6E724UL, &HFC45AC87CF39B25CUL, &H5466B5ABEDC27A0CUL, &HBD6FD3CC622FB356UL, &H5D8EB2B1740AF5B1UL, &HCED38E4591431960UL, &H59A6B1719FCE72E1UL, &HA6B0583E4A70BC86UL, &H5BD729287AC09764UL, &H68E2A1F8796BE1FCUL, &H5AD80EFC54F446E6UL, &H5FF2A3B373262A2UL, &H5A4687FB73757054UL, &HD36673C4C47EF753UL, &H6214BC58337669D8UL, &HBD980FD019802082UL, &H6189066A66BFD6FFUL, &HDF871C61486E0041UL, &H4EA1AA9B692189EBUL, &HA02AB81F7719C0D9UL, &H154BF52BD4283052UL, &HB10AC3A686F031D3UL, &H587E5FCD603AED70UL, &HF4F2CFEED13BAB0CUL, &H65E6A2CE2FD94B3FUL, &H19AE316996F1495BUL, &H23112185209B52CCUL, &H504FE64CD99ECD4CUL, &H4D044505F5B0097UL, &H5516EBD59213D481UL, &H3ADA6CA50A6E1DD7UL, &HAC4E82ED89F381E3UL, &H409FF4F90C7C5511UL, &HE580D6EFED0DC95BUL, &H9F78044F1D74A26UL, &H312275D2A00EE312UL, &H70D3435ADFE43B7AUL, &H8628E8DFA1C7A638UL, &H7A31B670DDC00D20UL, &H16627A772A0DBF7EUL, &H15621916A149BDC3UL, &HA4D5B8B081D5394CUL, &H2A4477417F4F5EBFUL, &H3BF673A199FC8DF1UL, &H5299DDD173FE2C18UL, &H21273CA10A7FE58BUL, &H5C3DDD17A908B126UL, &H16C6E787C8F98FEEUL, &H5C6B6EB39614F5EAUL, &H250521680168742UL, &H609B7E1662521711UL, &HE9C7DA991EB7DBB8UL, &H6AF9C1E20966FF57UL, &H93B9211B3746D94CUL, &H6D66CC62BA6A3C0EUL, &H503ADBF47515BD8EUL, &H29C784A6A5568164UL, &H2BD8C326E4DD2E0DUL, &H17F06AACB8E7110DUL, &HF4EF6861A699D7C6UL, &H4214A5B8A301096AUL, &H3D42B80BE81521B1UL, &H1F4E480D977CFBBEUL, &H2A440B6177B30165UL, &H5179EE785AC03103UL, &H754709C80689DEFBUL, &H709F2B7536090B53UL, &HF713F75F5CA5DCEDUL, &H634F254005981429UL, &H106B4C4CBA7C8881UL, &H6B1F22C1D2111A89UL, &HC0ACE0BB0C1BC34DUL, &H6FFC1272180CD183UL, &H5C0913376A2D79B9UL, &H6DE25DDA44657286UL, &H863204B1F69E7F07UL, &H6CDF4FD40B671FE2UL, &H2B00B74E100754E5UL, &H1C7B38928B612CFBUL, &HF6FC4F67ABFAFB47UL, &H1B404CF620F252B5UL, &H32C268050826BAC3UL, &H451115143FCEEC9DUL, &H4055703EEE3381B2UL, &H2A97EA57A85060A5UL, &HEFD9D78A951AD9E5UL, &H68AEFFB82DF825ABUL, &H6429CF1A3A8DEC5BUL, &H139F05BEB23F6935UL, &H335C62D32DE292B6UL, &H4622430A4136A598UL, &HA09FCC99B33D9A98UL, &H9A088A0BEB6012EUL, &HAA2DD7AB2427A902UL, &H75B4D94A14DC3BAEUL, &HD551551C8B1DB985UL, &H596DA9D0F5755569UL, &HCB01ADDFDA1B92B4UL, &H13EF0089E3AE944DUL, &HEF88BB62D8E77C65UL, &H39F4C697524589BEUL, &H819D8178DB75F631UL, &H2C312CC3560DE50BUL, &H2CC4F4EE541B7EFCUL, &H2AC4322D42937B86UL, &H49AB716103AA729AUL, &H5488EE82FE9EBD7FUL, &HFA20B784AB03A1A3UL, &H7D61FB800A71A77AUL, &HCF8229858C057157UL, &H6029FA0DBF9C9D06UL, &HA0419FC80909A59DUL, &H60849D45C1A4149EUL, &H896CF4EA98D7B4C7UL, &H1964BC0E2929D168UL, &H5E43E5F5A5950D33UL, &HDA1C3E6FF4001E5UL, &HAABE12F1F67708DBUL, &H29FD8E799598757UL, &HA075B7E8EA2B7B1EUL, &H538F094D4AAD02C8UL, &H1UL, &H0UL, &H57B1864DC9BA5C1BUL, &H2FE0D55971CE221AUL, &H9CC00AD28F07F1E0UL, &H2C5A74B839DD8BB1UL, &HDFC56F6041225140UL, &H4A720DD3649F6BAEUL, &H34C7A7622C00F108UL, &H7C65CA851821DEF5UL, &HB7C6FA367912AEECUL, &H65900965447075B9UL, &H366CE0E4327C4AEEUL, &H682E512FC7A0B699UL, &H7A63B9B5227DCE30UL, &H6E4CB6F3ECC3EEB9UL, &HFFD0BA97EB1D4CAUL, &H6D2DFFF0055D90CCUL, &HA8153A9557888E2EUL, &H6CB2BBA4872C5458UL, &HF45B46DC15A56C7EUL, &H6C6953459FBAC32CUL, &HC720F53F861BA70BUL, &H541FC4C95B80E3C9UL, &H8636DDD3D6571DE4UL, &H4D333E27A3743A4FUL, &HD65FA3DB74BBB068UL, &H5C38130E9BA8089UL, &HC80C8A175B15CB1DUL, &H17DD0C7A4EDC68C7UL, &HEE297FE89F0A0CFFUL, &H11F17EF4B8D74FF5UL, &H1869BAA6BEDA2A2EUL, &H65FDA88C86A164DUL, &H22DBCB85FC53CEC2UL, &H56F84BD255921CD5UL, &HD294B6D72674FA16UL, &H34D0A0D05A5DFA50UL, &H3C1C637DDFB1F5AAUL, &H6C43AC04CDE55834UL, &H33602A524102CBE9UL, &H72890C75F101574UL, &HA6D9F836C4801BEEUL, &H2E2756F3F4956E14UL, &H37F6C426688320AFUL, &H71EDBF8AE3B89999UL, &H574DF53CA3C0B659UL, &H5032E556CE3A1423UL, &H812CE1E83DFAFD80UL, &H760A09E2E9903530UL, &H803AD4D4F770758EUL, &H1CB5DFD65A35F420UL, &H2590BD62E9797E69UL, &H24AD2AB1669E3235UL, &H4CAAB126C6CF8E08UL, &H79497EFBA9C2BF82UL, &H5D072B37391EFEE7UL, &H3F706E013FA62F5BUL, &H50F9F92236659E89UL, &H1AF88BBFA602279DUL, &HB87956B1361DE8E8UL, &H349F032662C1244FUL, &HFB378A9434CDBF5EUL, &H56CF952B2BD04897UL} | |
Public Function CalcStatus(ByVal st() As UInteger, ByVal s() As ULong) As UInteger() | |
'sは下位bitから | |
st(0) = 0 | |
st(1) = 0 | |
st(2) = 0 | |
st(3) = 0 | |
Dim t As UInteger = 1 | |
Dim c As Integer = 0 | |
Dim ic As Integer = 0 | |
Dim tmp As ULong | |
For i As Integer = 0 To 126 | |
If i = 31 Or i = 63 Or i = 95 Then | |
t = 1 | |
c += 1 | |
End If | |
tmp = (invlist(ic) And s(0)) | |
ic += 1 | |
tmp = tmp Xor (invlist(ic) And s(1)) | |
ic += 1 | |
tmp = (tmp >> 32) Xor (tmp And &HFFFFFFFFUL) | |
tmp = (tmp >> 16) Xor (tmp And &HFFFFUL) | |
tmp = (tmp >> 8) Xor (tmp And &HFFUL) | |
tmp = (tmp >> 4) Xor (tmp And &HFUL) | |
tmp = (tmp >> 2) Xor (tmp And &H3UL) | |
tmp = (tmp >> 1) Xor (tmp And &H1UL) | |
If tmp = 1UL Then | |
st(c) = (st(c) Or t) | |
End If | |
t <<= 1 | |
Next | |
Return st | |
End Function | |
End Module |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment