1
일부 c 코드를 파이썬으로 변환 중입니다. 거기에 어떤 drand48() 파이썬 (정확히 같은!) 또는 래퍼 해당하는 것이 궁금 무엇입니까?거기에 파이썬이나 래퍼에 drand48()에 상응하는 것이 있습니까?
덕분에 많은
일부 c 코드를 파이썬으로 변환 중입니다. 거기에 어떤 drand48() 파이썬 (정확히 같은!) 또는 래퍼 해당하는 것이 궁금 무엇입니까?거기에 파이썬이나 래퍼에 drand48()에 상응하는 것이 있습니까?
덕분에 많은
당신은 random.random
찾고 있습니다.
>>> import random
>>> help(random)
>>> random.random()
0.8423026866867628
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
그러나 출력은 파이썬 표준 난수 생성기보다 현저하게 떨어집니다. rand48
계열의 함수는 SVID 3에 의해 1989 년에 폐기되었습니다.
출력이 drand48()와 같은지 확실하지 않습니다. 그래서 질문했습니다 ... – Shan
출력이 달라집니다. 숫자를 생성하기 위해 다른 알고리즘을 사용하기 때문입니다. 그러나 두 함수 모두 균일 한 (0,1) 분포를 근사합니다. –
정확히 drand48()이 필요합니다. 요구 사항 ... – Shan