如何在Python中构建符合数据的随机数生成器
这是我在做一个问题集时遇到的一个问题。我需要设计一个随机数生成器,能够生成与数据相符的请求大小。然后再设计另一个随机数生成器,生成与数据相符的到达时间。在完成这些后,我还需要解释我是如何分析数据来实现这一点的,以及为什么我认为我的随机数生成器与数据相符。我已经分析了数据,并根据日志中的大小创建了一个图表。
我在Python中构建了一个随机数生成器,可以生成随机数,但这些随机数与请求大小不符。到目前为止,我在Python中做了以下事情:
import random
import math
import cPickle
with open('Logs2.txt', 'w') as f_out:
for i in range(17):
t = ((-1.0 * (0.4)) * math.log(random.random()))
f_out.write("{b}\n".format(b=t))
我该如何创建这些与我的数据相符的随机变量呢?这里是数据:
1
0.983606557
0.967213115
0.93442623
0.918032787
0.901639344
0.868852459
0.819672131
0.721311475
0.639344262
0.606557377
0.508196721
0.491803279
0.360655738
0.278688525
0.081967213
0.06557377
0.655737705
我需要创建的随机变量要尽量接近这些数字,顺序不重要,之后我会对它们进行排序。
2 个回答
0
通常,伪随机数生成器会依赖系统时钟来产生一些看起来“随机”的数字,目的是为了生成不同的数字。不过,这样做并不能产生不同数字的模式。
1
我不太明白你具体在问什么,但听起来你可能是在想要对你的数据进行建模,或者把数据适配到某种统计分布,或者也许是想用每个数据点作为中心趋势,生成一组数据。
无论是哪种情况,你可能都需要使用NumPy模块中的numpy.random。这个模块包含了很多统计分布的函数,并且有一些方便的方法可以用来创建已知中心趋势和偏差的随机变量。一个很好的例子是numpy.random.normal。
SciPy是另一个在数学和科学工作中必不可少的工具包,根据我的经验,它提供了更高级(但不太直观)的统计函数和类。你可能会觉得scipy.stats很有用。
再次强调,我不太确定你具体在问什么。如果你需要更多帮助,请继续留言。