我需要隨機地(以相同的概率)從文件中的數組中挑選一些固定數量的元素。我想讀取一次文件,只保留拾取的元素,因爲數組可能很長,我不想將它保存在內存中。應該有相同的概率選擇每個子陣列。而且在開始時我不知道數組的大小。如何在讀取數組時從數組中隨機選擇任意數量的元素
我該怎麼辦?
我需要隨機地(以相同的概率)從文件中的數組中挑選一些固定數量的元素。我想讀取一次文件,只保留拾取的元素,因爲數組可能很長,我不想將它保存在內存中。應該有相同的概率選擇每個子陣列。而且在開始時我不知道數組的大小。如何在讀取數組時從數組中隨機選擇任意數量的元素
我該怎麼辦?
這是我真正需要的。謝謝 – Nikita 2014-12-19 10:01:00
如果你不關心你正在拾取的元素的確切數量,一個簡單的解決方案是讀取文件並以固定的概率選取每個元素。
如果你想要一個確切的數字,你需要在讀取整個文件之前知道這個文件中有多少個元素,計算一個你想要的元素列表(作爲一個整數列表),然後讀取文件並選擇正確的元素。
這是一個非常大的數組,因此需要花費很多時間來閱讀它兩次。主要想法是隻讀一次。此外,我有一個執行數量的元素,我需要選擇 – Nikita 2014-12-19 09:37:56
我編輯了自己的問題補充你的評論中提到的另外很重要的要求。希望你不介意 - 這會顯着改變問題。 – 2014-12-19 09:51:52