3

長方形内に一定量のランダムな一様点を生成しようとしています(各コーナーの座標のペアを知っています)。

長方形をABCDとしましょう

私の考えは、AC 対角線で長方形を 2 つの三角形に分割することです。対角線の傾きと切片を求めます。次に、[0,1] 区間から 2 つの乱数を生成し、それらを a,b とします。x = a AB および y = b AD (AB、AD、距離) を評価します。A が (0,0) でない場合、x と y A の座標に追加できます。これで点 (x,y) ができました。下三角 (ABC) に含まれていない場合は、次の手順に進みます。それ以外の場合は、点をプロットに追加し、(x,y) 対 AC 対角線の対称も追加して、上三角形 (ADC) も塗りつぶすことができるようにします。

私はこれを実装しましたが、ポイントが均一に生成されているかどうかは非常に疑わしいです(プロットから判断)。アルゴリズムをどのように変更すればよいですか? 問題は、三角形と対称のものを選択する方法に関連していると思います。

写真

4

6 に答える 6

13

x=random([Ax, Bx]) と y=random([By, Cy]) を生成して (x,y) としてまとめてみませんか? n 次元の一様分布は、単純にコンポーネントの n 個の一様分布の積です。

于 2013-05-17T14:54:43.750 に答える
5

これは、ポイント ピッキングおよび他の同様の用語と呼ばれます。ポイントが一様分布から来るはずであるという点で、あなたは正しい軌道に乗っているようです。あなたのプロットは私にはかなりランダムに見えます。

上三角形と下三角形で何をしていますか?それらは不必要に見え、確かにランダム性を低下させます。これは、正反対の変数の線に沿った何らかの形式の分散の削減ですか? @ Paddy3118が正しく、スペースを埋めるためにランダムなポイントが本当に必要な場合は、不一致の少ないシーケンスを調べる必要があります。Halton シーケンスは、 van der Corput シーケンスを多次元に一般化したものです。sobolsetMatlab の Statistics Toolbox をお持ちの場合は、およびhaltonset関数 またはqrandstreamおよびをチェックしてくださいqrand

于 2013-05-19T03:26:23.813 に答える
1

より均一な密度を求める場合は、Van der Corput シーケンスを検討してください。このシーケンスはモンテカルロ シミュレーションで使用され、 Wolfram Mathworldでは準ランダム シーケンスと呼ばれています。

于 2013-05-17T19:44:13.420 に答える
0

間隔 [0,1] で 2 つの乱数を生成し、それらを x と y として四角形に変換してスケーリングします。

于 2014-02-27T06:35:23.430 に答える