试图绘制一个随机函数,但它似乎不是很随机
Trying to plot a random function but it seems that it's not quite random
我正在尝试绘制教科书中的随机函数,如下所示:
我所做的是为一个范围内的所有数字生成一个介于 1 到 20 之间的随机数。
import numpy as np
import random
import matplotlib.pyplot as plt
X = np.arange(1,20,0.2).tolist()
Random = [random.random() for x in X]
fig, axs = plt.subplots(1, 1)
axs.plot(X, Random,linestyle = 'dotted', color='r')
然后我绘制了这个但是我得到了这个:
现在我想知道这不是很随机,我们可以看到在某些范围内函数在增加或减少,看起来这些值并不是完全独立的。
我的问题是如何写一个像第一张图一样完全随机的函数。
我能够用相同的代码做得很好。
为什么不再试一次 运行 呢?
我认为你必须使用 scattar 。
X = np.arange(1,20,0.2).tolist()
Random = [random.random() for x in X]
plt.scatter(X,Random)
在你的第一个图中,水平轴和垂直轴是相同的,你说你想重现那个,这让我相信它是在绘制成对的随机数。 (实际上看起来它们是 U(-6,6) 值。)这就是以下代码的作用:
import random
import matplotlib.pyplot as plt
randnums = [random.random() for _ in range(101)]
plt.scatter(randnums[0:100], randnums[1:101])
plt.show()
结果将与 运行 运行 不同,但看起来像这样:
此图表明相邻值在单位正方形的所有四个象限中均等平衡,这很好地表明它们不相关,但远不及进行严格测试。
值得一提的是,人类对随机性的判断是出了名的差。这就是为什么大多数语言库中使用的 PRNG 都经过大量统计测试的彻底审查。有关 Diehard tests or the TestU01 suite. Python's random
uses Mersenne Twister 的详细信息,请参阅维基百科,它已经过这些测试并被认为足以用于统计(但不是密码)使用。换句话说,你不需要做测试,它已经完成了。
我正在尝试绘制教科书中的随机函数,如下所示:
我所做的是为一个范围内的所有数字生成一个介于 1 到 20 之间的随机数。
import numpy as np
import random
import matplotlib.pyplot as plt
X = np.arange(1,20,0.2).tolist()
Random = [random.random() for x in X]
fig, axs = plt.subplots(1, 1)
axs.plot(X, Random,linestyle = 'dotted', color='r')
然后我绘制了这个但是我得到了这个:
现在我想知道这不是很随机,我们可以看到在某些范围内函数在增加或减少,看起来这些值并不是完全独立的。 我的问题是如何写一个像第一张图一样完全随机的函数。
我能够用相同的代码做得很好。 为什么不再试一次 运行 呢? 我认为你必须使用 scattar 。
X = np.arange(1,20,0.2).tolist()
Random = [random.random() for x in X]
plt.scatter(X,Random)
在你的第一个图中,水平轴和垂直轴是相同的,你说你想重现那个,这让我相信它是在绘制成对的随机数。 (实际上看起来它们是 U(-6,6) 值。)这就是以下代码的作用:
import random
import matplotlib.pyplot as plt
randnums = [random.random() for _ in range(101)]
plt.scatter(randnums[0:100], randnums[1:101])
plt.show()
结果将与 运行 运行 不同,但看起来像这样:
此图表明相邻值在单位正方形的所有四个象限中均等平衡,这很好地表明它们不相关,但远不及进行严格测试。
值得一提的是,人类对随机性的判断是出了名的差。这就是为什么大多数语言库中使用的 PRNG 都经过大量统计测试的彻底审查。有关 Diehard tests or the TestU01 suite. Python's random
uses Mersenne Twister 的详细信息,请参阅维基百科,它已经过这些测试并被认为足以用于统计(但不是密码)使用。换句话说,你不需要做测试,它已经完成了。