কম্পিউটার টিউটোরিয়াল

C++-এ বৃত্তে র‍্যান্ডম পয়েন্ট জেনারেট করা


ধরুন আমাদের একটি বৃত্তের ব্যাসার্ধ এবং কেন্দ্রের x-y পজিশন দেওয়া আছে, আমাদের randPoint() নামে একটি ফাংশন লিখতে হবে যা বৃত্তে একনিষ্ঠভাবে একটি র‍্যান্ডম পয়েন্ট জেনারেট করে। তাই কিছু গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে −

  • ইনপুট এবং আউটপুট মান ফ্লোটিং-পয়েন্ট-এ।
  • ব্যাসার্ধ এবং কেন্দ্রের x-y পজিশন ক্লাস কন্সট্রাক্টরে পাস করা হয়।
  • বৃত্তের পরিধিতে থাকা একটি পয়েন্ট বৃত্তের ভিতরে মনে করা হয়।
  • randPoint() র‍্যান্ডম পয়েন্টের x-পজিশন এবং y-পজিশন ফেরত দেয়, সেই ক্রমে।

তাই যদি ইনপুট হয় [10, 5,-7.5], তবে এটি কিছু র‍্যান্ডম পয়েন্ট জেনারেট করতে পারে যেমন [11.15792,-8.54781],[2.49851,-16.27854],[11.16325,-12.45479]。

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −

  • uniform() নামে একটি মেথড সংজ্ঞায়িত করুন। এটি নিম্নরূপ কাজ করবে −
  • random_number/MAX RANDOM ফেরত দিন
  • ইনিশিয়ালাইজারের মাধ্যমে rad, এবং কেন্দ্রের কোঅর্ডিনেট ইনিশিয়ালাইজ করুন
  • randPoint নিম্নরূপ কাজ করবে −
  • theta = 2*Pi*uniform()
  • r := uniform()-এর বর্গমূল
  • একটি জোড়া ফেরত দিন (center_x + r*radius*cos(theta), center_y + r*radius*sin(theta))

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −

উদাহরণ

#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){    cout << "[";    for(int i = 0; i<v.size(); i++){       cout << v[i] << ", ";    }    cout << "]"<<endl; } class Solution {    public:    const double PI = 3.14159265358979732384626433832795;    double m_radius, m_x_center, m_y_center;    double uniform() {       return (double)rand() / RAND_MAX;    }    Solution(double radius, double x_center, double y_center) {       srand(time(NULL));       m_radius = radius; m_x_center = x_center; m_y_center = y_center;    }    vector<double> randPoint() {       double theta = 2 * 3.14159265358979323846264 * uniform();       double r = sqrt(uniform());       return vector<double>{          m_x_center + r * m_radius * cos(theta),          m_y_center + r * m_radius * sin(theta)       };    } }; main(){    Solution ob(10, 5, 7);    print_vector(ob.randPoint());    print_vector(ob.randPoint());    print_vector(ob.randPoint()); }

ইনপুট

কন্সট্রাক্টরে 10, 5, 7 পাস করুন randPoint() তিনবার কল করুন

আউটপুট

[1.5441, 9.14912, ] [-1.00029, 13.9072, ] [10.2384, 6.49618, ]

  1. সি++-এ লুপের ভেতরে ভিন্ন র‍্যান্ডম নম্বর কীভাবে জেনারেট করবেন?

  2. সি++-এ র‍্যান্ডম নম্বর জেনারেশন (Random Number Generation)

  3. C++ প্রোগ্রাম: মাল্টিপ্লাই-উইথ-ক্যারি পদ্ধতিতে র‍্যান্ডম সংখ্যা জেনারেট

  4. C++ প্রোগ্রাম: র‍্যান্ডম নম্বর জেনারেট