R ব্যাসার্ধের বৃত্তের মধ্যে কীভাবে একটি এলোমেলো পয়েন্ট উত্পন্ন করা যায় :
r = R * sqrt(random())
theta = random() * 2 * PI
(ধরে নেওয়া random()
0 এবং 1 এর মধ্যে সমানভাবে একটি মান দেয়)
আপনি যদি এটি কার্তেসিয়ান স্থানাঙ্কে রূপান্তর করতে চান তবে আপনি এটি করতে পারেন
x = centerX + r * cos(theta)
y = centerY + r * sin(theta)
কেন sqrt(random())
?
আসুন গণিতটি যা দেখায় sqrt(random())
। সরলতার জন্য ধরে নিন যে আমরা ইউনিট বৃত্তের সাথে কাজ করছি, অর্থাৎ আর = 1।
আমরা কেন্দ্র থেকে কতটা দূরে দেখছি পয়েন্টের মধ্যবর্তী গড় দূরত্ব একই হওয়া উচিত। উদাহরণস্বরূপ, এর অর্থ হল, পরিধি ২ সহ একটি বৃত্তের ঘেরের দিকে তাকানো আমাদের পরিধি 1 সহ একটি বৃত্তের ঘেরের পয়েন্টগুলির সংখ্যার চেয়ে দ্বিগুণ পয়েন্ট পাওয়া উচিত।
যেহেতু একটি বৃত্ত (2π পরিধি দ ) এর সাথে সুসংগত বৃদ্ধি দ বোঝা যায় যে র্যান্ডম বিন্দুর সংখ্যা সঙ্গে সুসংগত হত্তয়া উচিত দ । অন্য কথায়, পছন্দসই সম্ভাবনা ঘনত্ব ফাংশন (পিডিএফ) রৈখিকভাবে বৃদ্ধি পায়। যেহেতু পিডিএফের ক্ষেত্রফল 1 এর সমান এবং সর্বাধিক ব্যাসার্ধ 1 হওয়া উচিত, তাই আমাদের রয়েছে

সুতরাং আমরা জানি যে আমাদের এলোমেলো মানগুলির পছন্দসই ঘনত্বটি কেমন হওয়া উচিত। এখন: আমরা কীভাবে এমন এলোমেলো মান তৈরি করব যখন আমাদের সমস্ত কিছু 0 থেকে 1 এর মধ্যে অভিন্ন র্যান্ডম মান হয়?
আমরা একটি কৌশল ব্যবহার করি যার নাম ইনভার্স ট্রান্সফর্ম স্যাম্পলিং
- পিডিএফ থেকে, ক্রম বিতরণ ফাংশন (সিডিএফ) তৈরি করুন
- Y = x এর সাথে এটি মিরর করুন
- ফলস্বরূপ ফাংশনটি 0 এবং 1 এর মধ্যে একটি অভিন্ন মান প্রয়োগ করুন।
জটিল মনে হচ্ছে? আমাকে সামান্য পাশের ট্র্যাক সহ একটি ব্লককোট প্রবেশ করান যা অন্তর্দৃষ্টি বোঝায়:
মনে করুন আমরা নিম্নলিখিত বিতরণ সহ একটি এলোমেলো পয়েন্ট উত্পন্ন করতে চাই:

এটাই
- 1 এবং 2 এর মধ্যে সমানভাবে পয়েন্টগুলির 1/5, এবং
- পয়েন্ট 4/5 সমান 2 এবং 3 এর মধ্যে।
সিডিএফ হ'ল নাম অনুসারে, পিডিএফটির संचयी সংস্করণ। স্বজ্ঞাতভাবে: পিডিএফ ( x ) x এ এলোমেলো মানের সংখ্যা বর্ণনা করে , সিডিএফ ( এক্স ) এক্স এর চেয়ে কম এলোমেলো মানগুলির সংখ্যা বর্ণনা করে ।
এক্ষেত্রে সিডিএফ দেখতে চাইবে:

এটি কীভাবে কার্যকর তা দেখতে, কল্পনা করুন যে আমরা সমানভাবে বিতরণ করা উচ্চতায় বুলেটগুলি বাম থেকে ডানদিকে গুলি করি shoot বুলেটগুলি লাইনে আঘাত করার সাথে সাথে তারা মাটিতে নেমে যায়:

দেখুন মাটির বুলেটের ঘনত্ব কীভাবে আমাদের কাঙ্ক্ষিত বিতরণের সাথে মিলে যায়! আমরা প্রায় সেখানে!
সমস্যাটি হ'ল এই ফাংশনের জন্য, y অক্ষটি আউটপুট এবং এক্স অক্ষটি ইনপুট । আমরা কেবল "মাটি থেকে সরাসরি গুলি চালাতে পারি"! আমাদের বিপরীত কার্য প্রয়োজন!
এই কারণেই আমরা পুরো জিনিসটি আয়না করি; এক্স হয়ে Y এবং Y হয়ে এক্স :

আমরা এই সিডিএফ -1 কল । পছন্দসই বিতরণ অনুযায়ী মানগুলি পেতে, আমরা সিডিএফ -1 (এলোমেলো ()) ব্যবহার করি।
… সুতরাং, ফিরে এলোমেলো ব্যাসার্ধের মান উত্পাদন করতে যেখানে আমাদের পিডিএফ 2 x এর সমান ।
পদক্ষেপ 1: সিডিএফ তৈরি করুন:
যেহেতু আমরা বাস্তবের সাথে কাজ করছি, সিডিএফ পিডিএফের অবিচ্ছেদ্য হিসাবে প্রকাশ করা হয়।
সিডিএফ ( এক্স ) = x 2 এক্স = এক্স 2
পদক্ষেপ 2: মিরর বরাবর সিডিএফ Y = এক্স :
গাণিতিকভাবে এইগুলি এক্স এবং y অদলবদল করতে এবং y এর জন্য সমাধান করতে উত্পন্ন হয় :
সিডিএফ : y = x 2
অদলবদল: x = y 2
সমাধান: y = √ x
সিডিএফ -1 : y = √ x
পদক্ষেপ 3: 0 এবং 1 এর মধ্যে একটি অভিন্ন মানটিতে ফলাফল ফাংশনটি প্রয়োগ করুন
সিডিএফ -1 (এলোমেলো ()) = রেন্ডোম ()
আমরা যা বের করতে পেরেছি :-)