微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图绘制一个随机函数,但它似乎不是很随机

如何解决试图绘制一个随机函数,但它似乎不是很随机

我试图从教科书中绘制一个随机函数,如下所示:

我所做的是为一个范围内的所有数字生成一个 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')

然后我绘制了这个但是我得到了这个:

enter image description here

现在我想知道这不是完全随机的,我们可以在某些范围内看到函数正在增加或减少,看起来这些值并不是完全独立的。 我的问题是如何写一个像第一张图那样完全随机函数

解决方法

我能够用相同的代码做得很好。 你为什么不尝试再次运行它? 我认为你必须使用 scattar 。

X = np.arange(1,20,0.2).tolist()
Random = [random.random() for x in X]
plt.scatter(X,Random)

plot of the results

,

在您的第一个图中,横轴和纵轴是相同的,即您说要重现的那个,这让我相信它正在绘制成对的随机数。 (实际上看起来它们是 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()

结果会因运行而异,但如下所示:

Plot of sequential pairs of random numbers

此图表明相邻值在单位正方形的所有四个象限中均等平衡,这很好地表明它们不相关,但远不及进行严格测试。

值得一提的是,人类在判断随机性方面是出了名的差。这就是为什么大多数语言库中使用的 PRNG 都经过大量统计测试的彻底审查。有关 Diehard testsTestU01 suite 的详细信息,请参阅维基百科。 Python 的 random 使用 Mersenne Twister,它已经过这些测试并被认为足以用于统计(但不是加密)用途。换句话说,您不需要进行测试,它已经完成了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。