我正在将一些 C 代码转换为 Python。我想知道在 python 中是否有任何 drand48() 等效项(完全相同!)或它的包装器?
非常感谢
请您参考如下方法:
您正在寻找 random.random。
>>> import random
>>> help(random)
>>> random.random()
0.8423026866867628
它不使用与 drand48 相同的生成器。 drand48 系列使用 48 位线性同余生成器,而 Python 随机模块使用高级 Mersenne Twister 算法。
如果您想要与drand48 完全相同 的输出,您可以在Python 中实现它。
# Uncomment the next line if using Python 2.x...
# from __future__ import division
class Rand48(object):
def __init__(self, seed):
self.n = seed
def seed(self, seed):
self.n = seed
def srand(self, seed):
self.n = (seed << 16) + 0x330e
def next(self):
self.n = (25214903917 * self.n + 11) & (2**48 - 1)
return self.n
def drand(self):
return self.next() / 2**48
def lrand(self):
return self.next() >> 17
def mrand(self):
n = self.next() >> 16
if n & (1 << 31):
n -= 1 << 32
return n
但是,输出将明显不如 Python 的标准随机数生成器。 rand48 函数系列在 1989 年被 SVID 3 宣布过时。
