এলোমেলো সংখ্যা উৎপন্ন করা

C:
এলোমেলো সংখ্যা উৎপন্ন করা

কিভাবে:

C তে, rand() ফাংশন ব্যবহার করে র‍্যান্ডম সংখ্যা উত্পন্ন করা যায়, যা C স্ট্যান্ডার্ড লাইব্রেরি <stdlib.h> এর অংশ। ডিফল্ট হিসাবে, rand() 0 থেকে RAND_MAX (যা <stdlib.h> এ একটি নির্ধারিত ধ্রুবক) পর্যন্ত প্রযোজ্য-র‍্যান্ডম সংখ্যা উৎপন্ন করে। বিভাগের উপর আরও নিয়ন্ত্রণের জন্য, প্রোগ্রামাররা rand() এর আউটপুট ম্যানিপুলেট করতে পারেন।

0 থেকে 99 পর্যন্ত র‍্যান্ডম নাম্বার জেনারেট করার একটি সরল উদাহরণ এখানে দেওয়া হলঃ

#include <stdio.h>
#include <stdlib.h> // rand() এবং srand() এর জন্য
#include <time.h>   // time() এর জন্য

int main() {
    // র‍্যান্ডম নাম্বার জেনারেটর বীজ করুন
    srand((unsigned) time(NULL));

    // 0 থেকে 99 পর্যন্ত একটি র‍্যান্ডম নাম্বার উৎপন্ন করুন
    int randomNumber = rand() % 100;

    printf("Random Number: %d\n", randomNumber);

    return 0;
}

এই প্রোগ্রামটি প্রতিবার চালালে নমুনা আউটপুট প্রতিবার ভিন্ন হতে পারে:

Random Number: 42

আলাদা বিভাগ মধ্যে র‍্যান্ডম নাম্বার জেনারেট করতে, আপনি মডুলাস অপারেটর (%) অনুযায়ী সামঞ্জস্য করতে পারেন। উদাহরণস্বরূপ, rand() % 10 0 থেকে 9 পর্যন্ত সংখ্যা উৎপন্ন করে।

মনে রাখবেন, প্রোগ্রামের পালাবদলের আলাদা ক্রমে র‍্যান্ডম সংখ্যা নিশ্চিত করতে প্রযোজ্য-র‍্যান্ডম নাম্বার জেনারেটর (srand() কল) বর্তমান সময় দিয়ে বীজ করা (time(NULL)) গুরুত্বপূর্ণ। বীজ ছাড়া (srand()), rand() প্রতিবার প্রোগ্রাম চালানোর সময় একই ক্রমের সংখ্যা উৎপন্ন করবে।

গভীর ডুব

rand() ফাংশন এবং এর বীজ সংক্রান্ত সমমানের srand() দশক ধরে C স্ট্যান্ডার্ড লাইব্রেরির অংশ রয়েছে। তারা এমন এলগোরিদমের উপর ভিত্তি করে তৈরি যা কেবল র‍্যান্ডম মনে হয়—সেজন্যই টার্ম “প্রযোজ্য-র‍্যান্ডম” শব্দটি ব্যবহৃত হয়। rand() এর অন্তর্নিহিত এলগোরিদম সাধারণত একটি লিনিয়ার কঙ্গ্রুয়েন্সিয়াল জেনারেটর (LCG) হয়।

যদিও rand() এবং srand() অনেক অ্যাপ্লিকেশনের জন্য যথেষ্ট, তারা র‍্যান্ডমনেসের মান এবং সম্ভাব্য প্রেডিক্টেবিলিটি সম্পর্কিত পরিচিত সীমাবদ্ধতা বহন করে। ক্রিপ্টোগ্রাফিক অপারেশনের মত উচ্চ-মানের র‍্যান্ডমনেসের প্রয়োজন হলে, /dev/random বা /dev/urandom (ইউনিক্স-লাইক সিস্টেমগুলিতে), অথবা ক্রিপ্টোগ্রাফিক লাইব্রেরি দ্বারা প্রদত্ত APIs এর মত বিকল্পগুলি বিবেচনা করা উচিত।