Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <random>
- using namespace std;
- std::random_device rd; // Типа генератор реального рандома, если сие поддерживается ОС.
- // В Linux, например, учитывает сигналы из драйверов, движения мыши и тому подобное. Из него берем seed.
- std::uniform_int_distribution<int> distr(0, 10); // Дистрибьютор рандома.
- int main()
- {
- const int iterations = 10000;
- std::vector<std::map<int, int>> vals;
- for (int i = 0; i < 3; i++)
- vals.push_back(std::map<int, int>());
- std::mt19937 mt(rd()); // Три генератора
- std::ranlux24 ran24(rd());
- std::ranlux48 ran48(rd());
- for (int i = 0; i < iterations; i++)
- {
- ++vals[0][distr(mt)];
- ++vals[1][distr(ran24)];
- ++vals[2][distr(ran48)];
- }
- auto print = [](const std::pair<int, int> &pair) { // Лямбда-функция. Охуеннейшая вещь.
- std::cout << pair.first << ": " << pair.second << '(' << (pair.second / static_cast<float>(iterations)) * 100 << "%)\n";
- };
- std::cout << "Mersenne Twister:\n";
- for (auto &m : vals[0])
- print(m);
- std::cout << std::endl;
- std::cout << "Ranlux24:\n";
- for (auto &m : vals[1])
- print(m);
- std::cout << std::endl;
- std::cout << "Ranlux48:\n";
- for (auto &m : vals[2])
- print(m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement