梅森算法生成随机数的Python实现

Posted **小君哥**

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梅森算法生成随机数的Python实现相关的知识,希望对你有一定的参考价值。

import time
class Util(object):
def __init__(self):
self.index = 624
self.MT = [0] * 624
  
  def inter(self,t):
  return (0xFFFFFFFF & t) # 取最后32位->t

  def twister(self):
  for i in range(self.index):
  y = self.inter((self.MT[i] & 0x80000000) + (self.MT[(i + 1) % self.index] & 0x7fffffff))
  self.MT[i] = self.MT[(i + 397) % self.index] ^ y >> 1
  if y % 2 != 0:
  self.MT[i] = self.MT[i] ^ 0x9908b0df
  self.index = 0

  def exnum(self):
  if self.index >= 624:
  self.twister()
  y = self.MT[self.index]
  y = y ^ y >> 11
  y = y ^ y << 7 & 2636928640
  y = y ^ y << 15 & 4022730752
  y = y ^ y >> 18
  self.index = self.index + 1
  return self.inter(y)

  def mainset(self,seed):
  self.MT[0] = seed # seed
  for i in range(1, self.index):
  self.MT[i] = self.inter(1812433253 * (self.MT[i - 1] ^ self.MT[i - 1] >> 30) + i)
  return self.exnum()

  def randomint(self,min_num,max_num):
  try:
  so = float(self.mainset(int(time.time()))) / (2 ** 32 - 1)
  rd = min_num + int((max_num - min_num) * so)
  return rd
  except Exception as ex:
  print "randomint function excute exception:" + str(ex)






































以上是关于梅森算法生成随机数的Python实现的主要内容,如果未能解决你的问题,请参考以下文章

伪随机数生成算法-梅森旋转(Mersenne Twister/MT)

你没听过的梅森旋转算法

Python生成随机数的一个标准库-random

梅森旋转算法安全性分析及改进

Python random库的使用

python中模块random是啥意思?