我想要一個里面有更多圓圈的圓圈(并不嚴格需要在里面)。內圓的位置是隨機確定的,中心的圓應該最多,越來越少,向圓的邊緣出去。
從
我知道代碼的其余部分是正確的,因為我使用了該答案中提到的另一個函式 (f(X)=2X/(1 X)) 并且它給出了正確的分布,偏向于更高的值:
def distBiasedUpper(_min, _max):
r = lambda : random.uniform(0, 1)
r1, r2 = r(), r()
bias = lambda _r: (2 * _r / (1 _r)) * (1 _max - _min) _min
return (bias(r1), bias(r2))
uj5u.com熱心網友回復:
實際上,您正在生成范圍 [ 0.0 , 1.0 ]中的亂數并將它們分配到范圍 [ _min, _max] 中。因此 0 被映射到_min. 結果,附近有更多點_min。
您必須在 [ -1.0, 1.0 ]范圍內生成亂數并將它們映射到 [ _min, _max]范圍內。所以 0 在范圍的中間,大部分點都在附近(_min _max) / 2:
def distBiasedMiddle(_min, _max):
r = lambda : random.uniform(-1, 1)
r1, r2 = r(), r()
bias = lambda _r: _r**3 * (_max - _min) / 2 (_min _max) / 2
return (bias(r1), bias(r2))

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368450.html
