擅长:python、mysql、java
<p>如果您知道pdf函数,那么使用sympy.stats公司. 看看<a href="https://github.com/sympy/sympy/blob/master/sympy/stats/crv_types.py" rel="nofollow">sympy source</a>中现有的发行版。您只需要子类<code>SingleContinuousDistribution</code>并定义一些方法。例如,这里是正态分布(去掉了docstring):</p>
<pre><code>class NormalDistribution(SingleContinuousDistribution):
_argnames = ('mean', 'std')
@staticmethod
def check(mean, std):
_value_check(std > 0, "Standard deviation must be positive")
def pdf(self, x):
return exp(-(x - self.mean)**2 / (2*self.std**2)) / (sqrt(2*pi)*self.std)
def sample(self):
return random.normalvariate(self.mean, self.std)
def Normal(name, mean, std):
return rv(name, NormalDistribution, (mean, std))
</code></pre>