欢迎访问宙启技术站
智能推送

在Python中使用theano.sandbox.rng_mrgMRG_RandomStreams()生成服从特定分布的随机数

发布时间:2023-12-23 01:56:04

在Python中使用theano.sandbox.rng_mrgMRG_RandomStreams()生成服从特定分布的随机数需要以下步骤:

1. 导入必要的模块:

import theano
import numpy as np
import matplotlib.pyplot as plt

2. 创建一个随机数生成器对象:

rng = np.random.RandomState(1234)

3. 定义一个符号变量代表随机数生成器:

srng = theano.sandbox.rng_mrg.MRG_RandomStreams(rng.randint(2 ** 30))

4. 使用srng对象生成服从特定分布的随机数。下面是一些常见的分布及其创建方法的示例:

4.1 正态分布(高斯分布):

   mu, sigma = 0, 1
   random_numbers = srng.normal(size=(1000,), avg=mu, std=sigma)
   

4.2 均匀分布:

   low, high = 0, 1
   random_numbers = srng.uniform(size=(1000,), low=low, high=high)
   

4.3 二项分布:

   n, p = 10, 0.5
   random_numbers = srng.binomial(size=(1000,), n=n, p=p)
   

4.4 泊松分布:

   lam = 5
   random_numbers = srng.poisson(size=(1000,), lam=lam)
   

5. 编译生成随机数的函数:

generate_random_numbers = theano.function([], random_numbers)

6. 调用函数生成随机数:

samples = generate_random_numbers()

7. 可视化生成的随机数:

plt.hist(samples, bins=50)
plt.xlabel('Random Number')
plt.ylabel('Frequency')
plt.title('Histogram of Random Numbers')
plt.show()

下面是一个完整的示例,我们将生成服从正态分布的随机数并进行可视化:

import theano
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.RandomState(1234)
srng = theano.sandbox.rng_mrg.MRG_RandomStreams(rng.randint(2 ** 30))

mu, sigma = 0, 1
random_numbers = srng.normal(size=(1000,), avg=mu, std=sigma)

generate_random_numbers = theano.function([], random_numbers)
samples = generate_random_numbers()

plt.hist(samples, bins=50)
plt.xlabel('Random Number')
plt.ylabel('Frequency')
plt.title('Histogram of Random Numbers')
plt.show()

运行上述代码,将会得到一个类似于正态分布的随机数直方图。