Generowanie liczb pseudolosowych - wasza opinia - niedawno temat był tu poruszany. Zaproponowany artykuł ( Nie używaj rand(), C++ ma <random> , rand() Considered Harmful”: [yt][ch9] ) wyjaśniający dlaczego Twój powyższy zapis nie zdaje egzaminu.
#include <random>
#include <iostream>
int random_mt19937(int min, int max)
{
std::random_device dev;
std::mt19937 rng(dev());
std::uniform_int_distribution<std::mt19937::result_type> dist6(min,max);
return dist6(rng);
}
int main()
{
std::cout << random_mt19937(1,100) << std::endl;
}
/*
Autor: © 2020 Pierun
url: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/
*/
thread_local std::mt19937 gen{std::random_device{}()};
template<typename T>
T random(T min, T max) {
using dist = std::conditional_t<
std::is_integral<T>::value,
std::uniform_int_distribution<T>,
std::uniform_real_distribution<T>
>;
return dist{min, max}(gen);
}