SORU
29 NİSAN 2011, Cuma


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>R2rve 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
29 NİSAN 2011, Cuma


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]

enter image description here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • eisleyhead

    eisleyhead

    11 Ocak 2006