在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()
运行上述代码,将会得到一个类似于正态分布的随机数直方图。
