我有一個很大的2維網格,比如說10000 X 10000.從這些網格我需要選擇1000個隨機點,但是我也需要注意兩點都不是一樣。我想到的標準方法是,在選擇每一點之後,我應該檢查所有以前的條目以查看該點是否已被選中,但對於大型網格和大量點似乎這將變得低效。有沒有更好的方法來做到這一點? 我使用C++2維網格的不同隨機點
2
A
回答
0
1
3
似乎對大電網和大量的點,這將成爲低效
不一定。有兩種潛在的低效率來源:
- 拒絕採樣(即不得不繼續嘗試直到找到尚未選定的點)導致開銷。考慮到你選擇0.001%的積分,隨機選擇兩次相同點的機率非常小。因此,重新嘗試的成本應該可以忽略不計。
- 檢查隨機選擇的點是否已被選中的開銷。如果將所有以前選擇的點存儲在合適的數據結構中,則可以在
O(1)
時間內完成。爲此,std::unordered_set
將是一個很好的候選人。該集合的大小將隨着您需要選擇的元素數量線性增長,並且將完全獨立於網格大小。
相關問題
- 1. 2維隨機提升
- 2. 從每個網格點的點列表中取出隨機點
- 3. 郵政網格佈局上的隨機不同彩色背景
- 4. 生成用於形成2維隨機點
- 5. 如何適合隨機點雲上的點網格
- 6. 顯示隨機網格c#
- 7. 在Matlab中生成隨機二維點
- 8. Silverlight的2維網格組件?
- 9. 再現隨機數(Python的2 /隨機)
- 10. 隨機洗牌的值的網格?
- 11. 隨機數不同的android
- 12. 不同的隨機數
- 13. 不同的隨機結果
- 14. SAS不同的隨機數
- 15. 如何隨機化three.js網格中頂點的長度?
- 16. 隨機分佈式網格點處的2D插值
- 17. HTML隨機點上的網頁
- 18. 網格中的隨機標誌
- 19. 布爾型網格的隨機指數
- 20. Android上的隨機黑白網格
- 21. masonjs網格中的隨機圖像
- 22. 同一個網站的隨機記錄
- 23. 區分不同的硒網格節點
- 24. 如何洗牌不同的3 dimentionl,2維列表在Python相同的隨機,tensorflow
- 25. 規則間隔點的三維網格
- 26. 二維網格中的連接點
- 27. 動態調整2維網格
- 28. 在固定的網格中獲取X個隨機點而不重複
- 29. 查找在3D網格中具有隨機點的立方體的角點
- 30. 來自4個不同範圍的2個不同的隨機數Python
@nim:我甚至會建議在這裏使用'std :: unordered_set',因爲這些值不需要進行排序。查找將是'O(1)'而不是'O(logN)'。 –
@LucTouraille,當然,不確定OP是否可以訪問C++ 11,否則boost是我猜的一個很好的替代品。 – Nim