如何使用马森扭曲器算法生成32位整数随机数

问题描述 投票:0回答:1

如何使用Marsenne扭曲器算法生成32位整数随机数?并将其保存到二进制文件。

random mt19937
1个回答
0
投票
#include <algorithm>
#include <fstream>
#include <ios>
#include <iostream>
#include <iterator>
#include <ostream>
#include <random>
#include <vector>

int main()
{
    // Create the random number engine
    std::mt19937::result_type seed = std::random_device()();
    auto engine = std::mt19937(seed);
    auto random = [&engine]() { return engine(); };

    // Generate some random numbers
    auto constexpr n = 1000;
    auto numbers = std::vector<std::mt19937::result_type>();
    std::generate_n(std::back_inserter(numbers), n, random);

    // Write them out to a file
    auto fout = std::ofstream("random_numbers.bin", std::ios::binary);
    fout.write(reinterpret_cast<const char*>(numbers.data()), 
        n * sizeof(decltype(numbers)::value_type));

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.