アットウィキロゴ

トルネコの大冒険2 (PS) > 確率

乱数

32-bit 疑似乱数生成器を用いており、その状態 x は次の式で更新されます: x ← (x × 0x5d588b65 + 1) mod 2^{32}

乱数 0〜(n-1) は (x / 2^{16}) mod n によって生成されます。

ソース

+ ...
;---------------------------------------
; v0 ← 乱数 0〜65535
;---------------------------------------
80089df0: 585d043c  lui a0,0x5d58
80089df4: 0d80033c  lui v1,0x800d
80089df8: 18a4628c  lw  v0,-23528(v1)
80089dfc: 658b8434  ori a0,a0,0x8b65
80089e00: 18004400  mult  v0,a0
80089e04: 12280000  mflo  a1
80089e08: 0100a224  addiu v0,a1,1
80089e0c: 18a462ac  sw  v0,-23528(v1)
80089e10: 0800e003  jr  ra
80089e14: 02140200  srl v0,v0,0x10
 
;---------------------------------------
; v0 ← 乱数 0〜(a0-1)
;---------------------------------------
80089e18: e8ffbd27  addiu sp,sp,-24
80089e1c: 1000b0af  sw  s0,16(sp)
80089e20: 1400bfaf  sw  ra,20(sp)
80089e24: 7c27020c  jal 0x80089df0
80089e28: 21808000  move  s0,a0
 
80089e2c: 03000016  bnez  s0,0x80089e3c
80089e30: 00000000  nop
80089e34: 9a270208  j 0x80089e68
80089e38: 21100000  move  v0,zero
 
80089e3c: 1a005000  div zero,v0,s0
80089e40: 02000016  bnez  s0,0x80089e4c
80089e44: 00000000  nop
80089e48: 0d000700  break 0x7
 
80089e4c: ffff0124  li  at,-1
80089e50: 04000116  bne s0,at,0x80089e64
80089e54: 0080013c  lui at,0x8000
 
80089e58: 02004114  bne v0,at,0x80089e64
80089e5c: 00000000  nop
 
80089e60: 0d000600  break 0x6
 
80089e64: 10100000  mfhi  v0
80089e68: 1400bf8f  lw  ra,20(sp)
80089e6c: 1000b08f  lw  s0,16(sp)
80089e70: 0800e003  jr  ra
80089e74: 1800bd27  addiu sp,sp,24
 
最終更新:2024年06月09日 12:06