我需要(大致)在空間中均勻分布點,但維度不是固定的。
我見過斐波那契球體演算法,但由于它對 x,z 使用 sin cos,因此它似乎只適用于 3D 空間。我也看過向日葵螺旋演算法,但它同樣僅限于 2D。
有沒有通用的演算法
- 一些點
- 多個維度
并在整個程序中傳播積分?
uj5u.com熱心網友回復:
通過將每個維度劃分為 k 個大小相等的區域,我們可以用 k^n 個 n 維超立方體填充您的空間。
給定 r 個點和 n 個維度,我們想要 r = k^n,所以 k = r^(1/n)。
例如,對于 1000 個點和 2 個維度,我們希望每個維度 k = 1000^(1/2) = 31.6 個區域,但對于 3 個維度,我們希望每個維度 k = 1000^(1/3) = 10 個區域。
對于非整數值,我建議四舍五入(因此 31.6 變為 32)。這將為您提供比點數更多的單元格。您可以選擇哪些單元格不會隨機獲得點數,或者將它們分布到邊緣或您喜歡的任何方式。
一旦您擁有應具有點的單元格,將 1 個點隨機分配給每個單元格內的一個位置,選擇每個維度 0-1 之間的浮點數作為單元格內沿該維度軸段的點位置。
由于單元格是完美分布的(可能除了一些額外的空單元格)并且每個單元格有一個點,因此這些點在空間中分布合理,同時仍然是隨機的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374296.html
上一篇:做一個2su??m演算法,我對python語法感到困惑
下一篇:匹配隊友偏好的演算法
