সি ++ র্যান্ডম নম্বর জেনারেটর

ইন্টারেক্টিভ কোড উদাহরণগুলির সাথে সি ++ এ এলোমেলো সংখ্যা কীভাবে তৈরি করবেন তা শিখুন। বিস্তারিত ব্যাখ্যা সহ র্যান্ড (), স্র্যান্ড (), <random> লাইব্রেরি, এসটিডি: : uniform_int_distribution এবং এসটিডি: : এমটি 19937 অন্বেষণ করুন।

একাধিক পদ্ধতি সেরা অনুশীলন তাৎক্ষণিক অনুলিপি

দ্রুত এলোমেলো নম্বর দরকার?

কোন কোড না লেখে তাত্ক্ষণিক ফলাফলের জন্য আমাদের অনলাইন র্যান্ডম নম্বর জেনারেটর ব্যবহার করে দেখুন।

এলোমেলো নম্বর জেনারেটর খুলুন

সি++ কোড এডিটর

ইন্টারেক্টিভ কোড উদাহরণগুলির সাথে সি ++ এ এলোমেলো সংখ্যা কীভাবে তৈরি করবেন তা শিখুন। বিস্তারিত ব্যাখ্যা সহ র্যান্ড (), স্র্যান্ড (), <random> লাইব্রেরি, এসটিডি: : uniform_int_distribution এবং এসটিডি: : এমটি 19937 অন্বেষণ করুন।

আউটপুট

সিমুলেটেড আউটপুট (সি ++ সার্ভারে রান করে)

উদাহরণ আউটপুট দেখতে "রান কোড" ক্লিক করুন

র্যান্ড () সহ ক্লাসিক সি ++

এলোমেলো পূর্ণসংখ্যা তৈরি করতে থেকে প্রথাগত র্যান্ড () ফাংশনটি ব্যবহার করুন <cstdlib> । সহজ এবং ব্যাপকভাবে সমর্থিত, যদিও দুর্বল এলোমেলো মানের কারণে ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত নয়।

সি++ এলোমেলো সংখ্যা জেনারেশন বোঝা

সি ++ এলোমেলো সংখ্যা তৈরি করার একাধিক উপায় সরবরাহ করে, সি-তে সাধারণ র্যান্ড () ফাংশন থেকে সি <random> ++11 এ আধুনিক লাইব্রেরিতে বিকশিত হয়। ক্লাসিক র্যান্ড () একটি রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (এলসিজি) ব্যবহার করে এবং স্র্যান্ড () এর সাথে বীজ করা হয়, যখন আধুনিক পদ্ধতিটি মার্সেন টুইস্টার অ্যালগরিদম ব্যবহার করে এবং বিভিন্ন ব্যবহারের ক্ষেত্রে বিভিন্ন বিতরণ ক্লাস সরবরাহ করে।

rand() Function

ক্লাসিক র্যান্ড () ফাংশনটি <cstdlib> সাধারণ ছদ্ম-এলোমেলো সংখ্যা উত্থাপন সরবরাহ করে। স্র্যান্ড () এর সাথে বীজ করা হয়েছে, এটি একটি রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (এলসিজি) অ্যালগরিদম ব্যবহার করে। বেসিক অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত তবে ক্রিপ্টোগ্রাফিক উদ্দেশ্যে নয়।

<random> Library

<random> লাইব্রেরিটি (সি + + 11 +) এসটিডি: এমটি19937 (মার্সেন টুইস্টার), uniform_int_distribution এর মতো বিভিন্ন বিতরণ এবং র্যান্ড () এর চেয়ে ভাল এলোমেলো গুণমান সহ আধুনিক এলোমেলো সংখ্যা প্রজন্ম সরবরাহ করে।

uniform_int_distribution

std::uniform_int_distribution provides precise control over integer ranges with uniform distribution. Perfect for statistical applications, simulations, and when exact range control is needed.

std::mt19937

std::mt19937 implements the Mersenne Twister algorithm, providing excellent statistical properties and a very long period (2^19937-1). It is the default engine for most <random> distributions.

সাধারণ ব্যবহারের ক্ষেত্রে

গেমিং এবং সিমুলেশন

গেম <random> লুপ এবং সিমুলেশনগুলিতে র্যান্ড () বা আধুনিক লাইব্রেরি ব্যবহার করে এলোমেলো ডাইস রোল, কার্ড ড্র, পদ্ধতিগত প্রজন্ম এবং গেম ইভেন্টগুলি তৈরি করুন।

নিরাপত্তা ও ক্রিপ্টোগ্রাফি

সুরক্ষা অ্যাপ্লিকেশনগুলির জন্য, বিশেষায়িত ক্রিপ্টোগ্রাফিক লাইব্রেরিগুলি ব্যবহার করার বিষয়টি বিবেচনা করুন। স্ট্যান্ডার্ড র্যান্ড () ক্রিপ্টোগ্রাফিক্যালি নিরাপদ নয়। পাসওয়ার্ড এবং টোকেনের জন্য প্ল্যাটফর্ম-নির্দিষ্ট নিরাপদ র্যান্ডম নম্বর জেনারেটর ব্যবহার করুন।

হাই পারফরম্যান্স কম্পিউটিং

<random> এসটিডি: এমটি19937 সহ আধুনিক গ্রন্থাগারটি এইচপিসি এবং বৈজ্ঞানিক কম্পিউটিং অ্যাপ্লিকেশনগুলিতে প্রচুর পরিমাণে এলোমেলো সংখ্যা তৈরি করার জন্য চমৎকার পারফরম্যান্স সরবরাহ করে।

সফটওয়্যার পরীক্ষা

সি++ অ্যাপ্লিকেশনগুলিতে শক্তিশালী কোড কভারেজ এবং বাগ সনাক্তকরণ নিশ্চিত করতে এলোমেলো পরীক্ষার ডেটা, ফাজ টেস্টিং ইনপুট এবং এজ কেস তৈরি করুন।

সি++ র্যান্ডম নাম্বার জেনারেশন কিভাবে কাজ করে

সি ++ এর ক্লাসিক <কোড ক্লাস = "বিজি-গ্রে -100 পিএক্স -2 পিওয়াই -1 বৃত্তাকার">র্যান্ড () ফাংশন (থেকে) একটি রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (এলসিজি) অ্যালগরিদম ব্যবহার করে। এটি সূত্রটি ব্যবহার করে ছদ্ম-এলোমেলো সংখ্যা তৈরি করে: <কোড ক্লাস = "বিজি-গ্রে -100 পিএক্স -2 পিওয়াই -1 বৃত্তাকার">পরবর্তী = (একটি * বর্তমান + গ) % মি। ক্রমটি নির্ধারণবাদী এবং অবশ্যই <কোড ক্লাস = "বিজি-গ্রে -100 পিএক্স -2 পিওয়াই -1 বৃত্তাকার">স্রান্ড () দিয়ে বীজ করা উচিত।

আধুনিক <কোড ক্লাস = "বিজি-গ্রে -100 পিএক্স -2 পি -1 বৃত্তাকার"> লাইব্রেরি (সি + + 11 +) মার্সেন টুইস্টার অ্যালগরিদম (এসটিডি: : এমটি 19937) ব্যবহার করে, যা আরও ভাল এলোমেলোতার গুণমান এবং পরিসংখ্যানগত বৈশিষ্ট্য সরবরাহ করে। এটি বিভিন্ন ব্যবহারের ক্ষেত্রে uniform_int_distribution, normal_distribution এবং bernoulli_distribution এর মতো বিভিন্ন বিতরণ ক্লাস সরবরাহ করে।

<কোড ক্লাস="bg-gray-100 px-2 py-1 rounded">std::random_device এলোমেলো নম্বর ইঞ্জিনগুলি বীজ বপনের জন্য এনট্রপির একটি প্ল্যাটফর্ম-নির্দিষ্ট উত্স সরবরাহ করে, প্রতিবার প্রোগ্রামটি চালানোর সময় বিভিন্ন ক্রম নিশ্চিত করে।

সি ++ র্যান্ডম জেনারেশনের জন্য বিশেষজ্ঞ টিপস

🎯

নতুন কোডের জন্য র্যান্ড () এড়িয়ে চলুন

নতুন C++ কোড (C++11 এবং পরবর্তী) এর জন্য, র্যান্ড()/srand() এর চেয়ে লাইব্রেরিটি পছন্দ করুন। এটি আরও ভাল এলোমেলোতা, আরও নমনীয়তা এবং থ্রেড-নিরাপদ অপারেশন সরবরাহ করে।

🔒

সর্বদা বীজ স্র্যান্ড ()

যদি র্যান্ড (র্যান্ড) ব্যবহার করে, তবে জেনারেটরটি বীজ বপন করার জন্য প্রোগ্রাম স্টার্টে সর্বদা স্র্যান্ড (এসটিডি: : টাইম (0)) কল করুন। অন্যথায়, আপনি প্রতিবারই একই ক্রম পাবেন। সহ, বীজ স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়।

উপযুক্ত বিতরণ ব্যবহার করুন

অভিন্ন পূর্ণসংখ্যা পরিসরের জন্য, std::uniform_int_distribution ব্যবহার করুন। ফ্লোটিং-পয়েন্ট নম্বরগুলির জন্য, স্ট্যান্ডার্ড::uniform_real_distribution ব্যবহার করুন। এটি সঠিক পরিসংখ্যানগত বৈশিষ্ট্য নিশ্চিত করে।

টেকনিক্যাল স্পেসিফিকেশন

অ্যালগরিদম

  • রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (র্যান্ড ফাংশন)
  • মার্সেন টুইস্টার (স্ট্যান্ড::এমটি19937)
  • প্ল্যাটফর্ম-নির্দিষ্ট এনট্রপি উত্স (স্ট্যান্ডার্ড::random_device)

পারফরম্যান্স বৈশিষ্ট্য

  • র্যান্ড (): দ্রুত কিন্তু দুর্বল এলোমেলোতার গুণমান
  • <random>: চমৎকার মানের সঙ্গে দ্রুত
  • std::mt19937: Very fast for large quantities