Skip to main content
 首页 » 编程设计

python之python 中是否有等效的 drand48() 或它的包装器

2025年05月04日17lonelyxmas

我正在将一些 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 宣布过时。