два...
Вопрос первый.
Вот код:
#include <iostream>
#include <random>
#include <stdexcept>
using namespace std;
int main () {
mt19937 gen;
uniform_real_distribution<> unif(-10, 10);
for (int n = 0; n < 10; ++n) {
auto a = unif(gen);
cout << a << endl;
}
return 0;
}
Я, конечно, могу загуглить про mt19937 gen, uniform_real_distribution, но не смог в докуменатции найти ряд ответов:
Насколько распространенно применение mt19937 / uniform_real_distribution?
при переходе по ссылке мало примеров, можно ли утверждать, что mt19937 и uniform_real_distribution взаимосвязаны и более эти коснструкции, помимо как паре, ни где не встречаются?
Еще не понятно, зачем в качестве аргумента в uniform_real_distribution передавать параметр типа mt19937, мол, ввиду определения uniform_real_distribution: "Produces random floating-point values x , uniformly distributed on the interval [ a , b )" зачем туда передавать mt19937 == движком случайных чисел...
Вопрос второй.
Еще есть такой код:
#include <iostream>
#include <random>
#include <stdexcept>
using namespace std;
int main () {
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<> unif(-10, 10);
for (int n = 0; n < 10; ++n) {
auto a = unif(gen);
cout << a << endl;
}
return 0;
}
зачем нужен какой-то random_device, если результат у этих программ один и тот же — вывод 10 случайных чисел? Если, опять же, залезть в докуменатцию по поводу random_device, узнает, что это движок, как и mt19937?
1. не обязательно, конечно, может быть другой источник 2. std::random_device may be implemented in terms of an implementation-defined pseudo-random number engine if a non-deterministic source (e.g. a hardware device) is not available to the implementation (то есть он системный) заметьте, что mt19937 определен как переносимый (правда, остальное в этой части - нет)
если разница между источником энтропии и выходным распределением не очевидна, могу поразжовывать
разве что кратко, если не лень)
реши задачу дано: монетка, которая с неизвестной тебе вероятностью p выпадает орлом и с вероятностью 1-p решкой сгенерировать на выходе честную монетку (орел и решка равновероятны)
Обсуждают сегодня