Random point in circle
შერჩევა პოლარული კოორდინატთა სისტემის დახმარებით. მარცხენა: r-ის თანაბარი შერჩევა. მარჯვენა: r-ის გასწორებული შერჩევა |
იმისთვის რომ თავიდან ავიცილოთ გამოუყენებელი შერჩევები ყველაზე მარტივი მეთოდი არის შერჩევა პოლარულ კოორდინატთა სისტემაში შესაბამისად 2 პარამეტრით: Θ-ს და r-ის გამოყენებით. თუ ჩვენ Θ და r-ს შევარჩევთ შემთხვევითად, ამ მეთოდით მიღებული წერტილები ცენტრთან იქნებიან კონცენტრირებული და შერჩევა თანაბარი არ იქნება. ცხარია რომ არათანაბარ შერჩევას იწვევს r და უნდა მოვახდინოთ r-ის სწორი შერჩევა, რათა წრეწირში მიღებული წერტილების განაწილება გახდეს თანაბარი.
void randomPointWithinCircle( double& x, double& y ) { double r = sqrt( random01() ); double theta = random01();
x = r*cos(theta); y = r*sin(theta); }მართალია შერჩევის ეს მეთოდი თავიდან იცილებს გამოუყენებელ გამოთვლებს(cos, sin, sqrt), თუმცა ის შეიცავს ბევრად მძიმე ოპერაციებს ვიდრე შერჩევა დაწუნებით.
Comments
Post a Comment