在Python中创建伪数据

时间:2018-10-18 18:21:12

标签: python numpy random

我正在尝试创建一个函数,该函数创建用于单独分析的假数据。这是该功能的要求。

问题1

在此问题中,您将使用numpy创建虚假数据。在函数create_data下方的单元格中,包含2个参数“ n”和“ rand_gen”。

  • “ rand_gen”参数是伪随机数生成器。我们正在使用伪随机数生成器来产生相同的结果。
  • 使用伪随机数生成器的numpy.random.randn函数创建一个长度为n的numpy数组并返回该数组。

这是我创建的功能。

def create_data(n, rand_gen):
'''
Creates a numpy array with n samples from the standard normal distribution

Parameters
-----------
n : integer for the number of samples to create
rand_gen : pseudo-random number generator from numpy  

Returns
-------
numpy array from the standard normal distribution of size n
'''

numpy_array = np.random.randn(n)
return numpy_array

这是我在函数上运行的第一个测试。

create_data(10, np.random.RandomState(seed=23))

我需要输出为这个精确的数组。

[0.66698806, 0.02581308, -0.77761941, 0.94863382, 0.70167179,
                       -1.05108156, -0.36754812, -1.13745969, -1.32214752,  1.77225828]

我的输出仍然是完全随机的,我不完全了解RandomState调用试图对种子进行操作以创建上述数组,而不是完全随机。我知道我需要在函数中使用rand_gen变量,但我不知道该在哪里,我认为这是因为我只是不了解它要执行的操作。

2 个答案:

答案 0 :(得分:1)

定义numpy_array = rand_gen.randn(n)

答案 1 :(得分:1)

我认为您要提出的问题是关于伪随机数和可复制的随机数。

真实随机数是由实词不可预测的数据组成的,例如观看熔岩灯,而伪随机数会创建一长串看起来随机的数字。

基本算法是:

  1. 可以从当前时钟时间开始获取种子或大量种子。
  2. 取部分种子作为随机数
  3. 对种子进行难以置信的数学毁坏,涉及移位,指数和乘法。
  4. 使用这些计算的输出作为新种子,转到步骤2。

诀窍在于,指定相同的种子意味着您每次都会获得相同的序列。您可以使用numpy.random.seed()进行设置,然后每次都获得相同的顺序。

我希望这是你要问的问题。