1
私はいくつかのCコードをPythonに変換しています。私はそれが任意のdrand48()相当のpython(まったく同じ!)またはそのラッパーですか?は、pythonやラッパーにdrand48()と同等のものがありますか?
どうもありがとう
私はいくつかのCコードをPythonに変換しています。私はそれが任意のdrand48()相当の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
ファミリの関数は、SVID 3によって1989年に廃止されました。
出力がdrand48()と同じかどうかわかりません...だから私は質問しました... – Shan
出力は異なりますそれは数を生成するために異なるアルゴリズムを使用するからです。しかし、両方の関数は一様(0,1)分布に近似しています。 –
私はちょうどdrand48()を必要としています...その必要条件... – Shan