2011-09-02 44 views

回答

6

您正在寻找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宣布为废弃。

+0

我不确定输出是否与drand48()相同...所以这就是为什么我问这个问题... – Shan

+0

它的输出将会不同因为它使用不同的算法来生成数字。但是,这两个函数都近似于一致的(0,1)分布。 –

+0

我正好需要drand48()...它的要求... – Shan

相关问题