我需要创建一个方法,该方法返回某个随机分布的采样数字,每次调用该方法返回的数字都比以前返回的数字大。巨大的随机数排序列表
或换句话说,我需要一个随机值排序列表的迭代器。
不幸的是,这个列表太大而无法在整个内存中创建。我想出的第一个想法是将我的价值空间分成桶,其中每个桶包含某些范围[a,b)的值。 说我的清单有N个元素。要创建一个桶,我会对我的分布进行N次抽样,并将每个值放入[a,b)范围内。该桶外的值将被丢弃。
这样我就可以创建一个新的存储桶,每次我重复上一次并保持内存消耗低。
但是,由于我不是统计专家,我有点害怕这会使我得到的数字变得糟糕。这是一个合适的方法吗?每个存储桶使用相同的确切分布生成器(org.apache.commons.math3.distribution.RealDistribution的实例)是否很重要?
更新:看来我做了一个糟糕的工作来解释我在说什么样的随机数。
我的数字形成随机分布的样本,例如平均值为m且方差为v的正态分布,或者均匀分布或指数分布。
我使用这些数字来模拟仿真中的某些行为。假设我想在某些时候触发事件。我需要安排数十亿次事件,这些事件触发的次数必须形成一个随机分布的样本。
所以,如果我通过添加一个随机数到我以前的数字来得到我的下一个数字,我确实得到了一个增长的随机数序列,但数字不会形成我的分布样本。
你所要求的是什么,绝对不是小事。我期望该程序在存在时必须使用将非常依赖于您从中抽取的分布。 – Lucas
请参阅下面的解决方案。这完全取决于在装箱时使用固定种子可以多次创建同一份分配样品的要求。 –