我需要創建一個方法,該方法返回某個隨機分佈的採樣數字,每次調用該方法返回的數字都比以前返回的數字大。巨大的隨機數排序列表
或換句話說,我需要一個隨機值排序列表的迭代器。
不幸的是,這個列表太大而無法在整個內存中創建。我想出的第一個想法是將我的價值空間分成桶,其中每個桶包含某些範圍[a,b)的值。 說我的清單有N個元素。要創建一個桶,我會對我的分佈進行N次抽樣,並將每個值放入[a,b)範圍內。該桶外的值將被丟棄。
這樣我就可以創建一個新的存儲桶,每次我重複上一次並保持內存消耗低。
但是,由於我不是統計專家,我有點害怕這會使我得到的數字變得糟糕。這是一個合適的方法嗎?每個存儲桶使用相同的確切分佈生成器(org.apache.commons.math3.distribution.RealDistribution的實例)是否很重要?
更新:看來我做了一個糟糕的工作來解釋我在說什麼樣的隨機數。
我的數字形成隨機分佈的樣本,例如平均值爲m且方差爲v的正態分佈,或者均勻分佈或指數分佈。
我使用這些數字來模擬仿真中的某些行爲。假設我想在某些時候觸發事件。我需要安排數十億次事件,這些事件觸發的次數必須形成一個隨機分佈的樣本。
所以,如果我通過添加一個隨機數到我以前的數字來得到我的下一個數字,我確實得到了一個增長的隨機數序列,但數字不會形成我的分佈樣本。
你所要求的是什麼,絕對不是小事。我期望該程序在存在時必須使用將非常依賴於您從中抽取的分佈。 – Lucas
請參閱下面的解決方案。這完全取決於在裝箱時使用固定種子可以多次創建同一份分配樣品的要求。 –