আমি কাপড় উপরে সব লাল, 40 অন্য কোন মত এটা গ মাধ্যমে পৃষ্ঠাগুলি ++, সম্পর্কে এই এবং প্রেক্ষিত স্টিফেন টি Lavavej থেকে "STL" ভিডিও
এবং এখনও ছিল না কিভাবে নিশ্চিত র্যান্ডম সংখ্যা কাজ অনুশীলনের যাতে আমি একটি পূর্ণ রবিবার নেন জিনিসটা এটি সমস্ত কী এবং এটি কীভাবে কাজ করে এবং কীভাবে ব্যবহার করা যায়।
আমার মতে এসটিএল "আর আর শ্রান্ড ব্যবহার না করা" সম্পর্কে সঠিক এবং তিনি ভিডিও 2 তে এটি ভালভাবে ব্যাখ্যা করেছেন । তিনি ব্যবহার করার পরামর্শও দেন:
ক) void random_device_uniform()
- এনক্রিপ্ট করা প্রজন্মের জন্য তবে ধীর (আমার উদাহরণ থেকে)
খ) এর উদাহরণগুলি mt19937
- দ্রুত, বীজ তৈরির ক্ষমতা, এনক্রিপ্ট করা হয়নি
আমি সমস্ত দাবী করা সি ++ 11 টি বই আমার কাছে অ্যাক্সেস করে খুঁজে পেয়েছি এবং ফে যে ব্রেইম্যান (2015) এর মতো জার্মান লেখকরা এখনও একটি ক্লোন ব্যবহার করেন
srand( time( 0 ) );
srand( static_cast<unsigned int>(time(nullptr))); or
srand( static_cast<unsigned int>(time(NULL))); or
কেবল # অন্তর্ভুক্তের <random>
পরিবর্তে <time> and <cstdlib>
- সুতরাং কেবলমাত্র একটি বই থেকে শিখতে যত্নবান হন :)।
অর্থ - এটি সি ++ 11 সাল থেকে ব্যবহার করা উচিত নয় কারণ:
প্রোগ্রামগুলি প্রায়শই এলোমেলো সংখ্যার উত্স প্রয়োজন। নতুন স্ট্যান্ডার্ডের আগে, সি এবং সি ++ উভয়ই র্যান্ড নামে একটি সাধারণ সি লাইব্রেরি ফাংশনে নির্ভর করেছিল। এই ফাংশনটি সিউডোরডম পূর্ণসংখ্যার উত্পাদন করে যা 0 থেকে একটি সিস্টেম-নির্ভর সর্বাধিক মান যা কমপক্ষে 32767 অবধি বিস্তৃত হয় rand র্যান্ড দ্বারা উত্পাদিত। কিছু অ্যাপ্লিকেশনগুলির জন্য এলোমেলো ভাসমান-পয়েন্ট সংখ্যা প্রয়োজন। কিছু প্রোগ্রামের এমন একটি সংখ্যা প্রয়োজন যা একটি অদ্বিতীয় বিতরণকে প্রতিফলিত করে। প্রোগ্রামাররা প্রায়শই ননরানডমনেস পরিচয় দেয় যখন তারা র্যান্ড দ্বারা উত্পাদিত সংখ্যার পরিসর, প্রকার বা বিতরণকে রূপান্তরিত করার চেষ্টা করে। (লিপম্যানস সি ++ প্রাইমার পঞ্চম সংস্করণ 2012 এর উদ্ধৃতি)
অবশেষে আমি বজরেন স্ট্রোপ্রস্পস নবীন বইয়ের 20 টি বইয়ের মধ্যে একটি সেরা ব্যাখ্যা খুঁজে পেয়েছি - এবং তার জিনিসগুলি জানা উচিত - "একটি সফর সি ++ 2019", "প্রোগ্রামিং নীতি ও অনুশীলন সি ++ 2016 ব্যবহার করে" এবং "দ্য সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজ 4 র্থ সংস্করণে in 2014 "এবং" লিপম্যানস সি ++ প্রাইমার পঞ্চম সংস্করণ 2012 "এর কয়েকটি উদাহরণ:
এবং এটি সত্যিই সহজ কারণ একটি এলোমেলো সংখ্যা জেনারেটর দুটি অংশ নিয়ে গঠিত:
(1) এমন একটি ইঞ্জিন যা এলোমেলো বা সিউডো-র্যান্ডম মানের ক্রম উত্পাদন করে। (২) এমন একটি বিতরণ যা সেই মানগুলিকে একটি পরিসরে গাণিতিক বিতরণে ম্যাপ করে।
মাইক্রোসফ্টস এসটিএল লোকের মতামত সত্ত্বেও, বার্জার্ন স্ট্রোস্পেস লিখেছেন:
ইন, স্ট্যান্ডার্ড লাইব্রেরি এলোমেলো নম্বর ইঞ্জিন এবং বিতরণ সরবরাহ করে (.7 24.7)। ডিফল্টরূপে ডিফল্ট_র্যান্ডম_জিনি ব্যবহার করুন, যা প্রশস্ত প্রয়োগযোগ্যতা এবং কম খরচের জন্য বেছে নেওয়া হয়েছে।
void die_roll()
সঙ্গে ভাল ধারণা উৎপাদিত ইঞ্জিন ও বন্টন - উদাহরণ বিয়ারনে Stroustrups থেকে using
(যে এখানে টেকার বেশি) ।
মানক লাইব্রেরি দ্বারা সরবরাহিত এলোমেলো সংখ্যা জেনারেটরগুলির ব্যবহারিক ব্যবহার করতে সক্ষম হতে <random>
এখানে বিভিন্ন উদাহরণ সহ কয়েকটি এক্সিকিউটেবল কোড কমপক্ষে প্রয়োজনীয় হ্রাস পেয়েছে যা আশা করি আপনার ছেলেমেয়ের জন্য নিরাপদ সময় এবং অর্থ:
#include <random> //random engine, random distribution
#include <iostream> //cout
#include <functional> //to use bind
using namespace std;
void space() //for visibility reasons if you execute the stuff
{
cout << "\n" << endl;
for (int i = 0; i < 20; ++i)
cout << "###";
cout << "\n" << endl;
}
void uniform_default()
{
// uniformly distributed from 0 to 6 inclusive
uniform_int_distribution<size_t> u (0, 6);
default_random_engine e; // generates unsigned random integers
for (size_t i = 0; i < 10; ++i)
// u uses e as a source of numbers
// each call returns a uniformly distributed value in the specified range
cout << u(e) << " ";
}
void random_device_uniform()
{
space();
cout << "random device & uniform_int_distribution" << endl;
random_device engn;
uniform_int_distribution<size_t> dist(1, 6);
for (int i=0; i<10; ++i)
cout << dist(engn) << ' ';
}
void die_roll()
{
space();
cout << "default_random_engine and Uniform_int_distribution" << endl;
using my_engine = default_random_engine;
using my_distribution = uniform_int_distribution<size_t>;
my_engine rd {};
my_distribution one_to_six {1, 6};
auto die = bind(one_to_six,rd); // the default engine for (int i = 0; i<10; ++i)
for (int i = 0; i <10; ++i)
cout << die() << ' ';
}
void uniform_default_int()
{
space();
cout << "uniform default int" << endl;
default_random_engine engn;
uniform_int_distribution<size_t> dist(1, 6);
for (int i = 0; i<10; ++i)
cout << dist(engn) << ' ';
}
void mersenne_twister_engine_seed()
{
space();
cout << "mersenne twister engine with seed 1234" << endl;
//mt19937 dist (1234); //for 32 bit systems
mt19937_64 dist (1234); //for 64 bit systems
for (int i = 0; i<10; ++i)
cout << dist() << ' ';
}
void random_seed_mt19937_2()
{
space();
cout << "mersenne twister split up in two with seed 1234" << endl;
mt19937 dist(1234);
mt19937 engn(dist);
for (int i = 0; i < 10; ++i)
cout << dist() << ' ';
cout << endl;
for (int j = 0; j < 10; ++j)
cout << engn() << ' ';
}
int main()
{
uniform_default();
random_device_uniform();
die_roll();
random_device_uniform();
mersenne_twister_engine_seed();
random_seed_mt19937_2();
return 0;
}
আমি মনে করি এটি সমস্ত যোগ করেছে এবং যেমনটি আমি বলেছিলাম যে, এটি উদাহরণগুলিতে নিখরচায় পড়তে আমার সময় এবং সময় লেগেছিল - যদি আপনার সংখ্যা সংখ্যা প্রজন্মের বিষয়ে আরও জিনিস থাকে তবে আমি সে সম্পর্কে সন্ধ্যা বা মন্তব্য বিভাগে শুনে খুশী এবং প্রয়োজনে এটি যুক্ত করবে বা এই পোস্টটি সম্পাদনা করবে। bool