Daire içinde rastgele bir nokta (düzgün)oluşturmak
Yarıçaplı bir daire içinde düzgün rasgele bir nokta oluşturmak lazımR.
Sadece aralığı aralığı [0 ... 2?), ve düzgün rasgele yarıçapı (0...., tekdüze rasgele bir açı seçerek farkındayım ^em>RKüçük yarıçap içinde iki belirli yarıçapları için, puan büyük yarıçapı içinde puan için çok daha yakın olacağından merkezine doğru daha fazla puan ile bitirmek isterim.
over here Bu konuda bir blog girişi buldum ama onun akıl anlamıyorum. Doğru olduğunu varsayalım, amaGerçekten (2/ . nereden aldığını anlamak istiyorum ^em>R2)×rve nasıl son çözüm o türetir.
Ret örnekleme ile ilgili:İçinde rastgele bir nokta oluşturmak olabilirR×Rdaire içinde olanı bulana kadar tekrar tekrar Kare. Bu yaklaşım bariz işbu garanti altında uzun süre gider bu çok düşük bir ihtimal bile olsa) sağlamaz-geri çekmesi.
CEVAP
Hadi Arşimet gibi, bu yaklaşım.
Nasıl ||=|BC| AB bir noktaya Üçgen ABC, tekdüze oluşturabilir miyiz? Hadi bu kolay bir paralelkenar A uzatarak. Kolay eşit A noktaları oluşturmak için. Biz düzgün rasgele bir X noktası AB üzerinde almak ve MÖ Y ve Z XBYZ denir böyle seçin. Biz sadece ADK görünen herhangi bir puan kat orijinal Üçgen düzgün seçilmiş bir nokta ABC için geri almak AC boyunca.
Şimdi düşünün bir daire. Sonsuz olarak düşünebiliriz sınırı içinde birçok Üçgen çevresi üzerinde orijin ABC ile B VE A ve C yok denecek kadar birbirine yakın isoceles. Bu üçgenler sadece bir açı teta seçerek alabiliriz. Şimdi şerit ABC bir nokta seçerek merkezine bir mesafe oluşturmak gerek. Yine D şimdi çember merkezi ile iki kez yarıçapı bulunduğu A, uzatmak.
A rastgele bir nokta seçmek kolay yukarıdaki yöntemi kullanarak. AB üzerinde rastgele bir nokta seç. Düzgün BC üzerinde rastgele bir nokta seç. Yani. rasgele sayılar bir çift x almak ve düzgün [0,R] üzerinde y merkezinden vererek mesafeler. Bizim Üçgen ince bir şerit kadar AB ve BC aslında paralel. Nokta Z sadece bir mesafe x kökenli y. X y>R geri pas geçiyoruz.
Burada R için tam bir algoritma=1. Çok basit kabul edersiniz umarım. Trigonometri kullanır, ama ret örnekleme aksine ne kadar sürer ve kaç random()
duyduğu sesleri üzerine bir garanti verebilirsiniz.
t = 2*pi*random()
u = random() random()
r = if u>1 then 2-u else u
[r*cos(t), r*sin(t)]
Burada İncelenmiştir.
f[] := Block[{u, t, r},
u = Random[] Random[];
t = Random[] 2 Pi;
r = If[u > 1, 2 - u, u];
{r Cos[t], r Sin[t]}
]
ListPlot[Table[f[], {10000}], AspectRatio -> Automatic]
0 ve 1 arasında rastgele bir kayan nok...
Javascript ile iki sayı arasında rastg...
Nasıl en iyi Ruby rastgele bir dize ol...
Poligon içinde nokta aka isabet sınama...
Nasıl düzgün trunk svn etiket oluşturm...