【C++】正規分布・t分布・一様分布・対数正規分布・二項分布に従う乱数の発生方法

【C++】正規分布・t分布・一様分布・対数正規分布・二項分布に従う乱数の発生方法

一様分布に従う乱数

C++では、std::uniform_real_distribution や std::uniform_int_distribution を使用して一様分布の乱数を生成できます。


#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_real_distribution<double> dist(0.0, 1.0);
    
    for (int i = 0; i < 5; ++i) {
        std::cout << dist(gen) << "\n";
    }
    return 0;
}
    

正規分布に従う乱数

std::normal_distribution を使用すると、正規分布(ガウス分布)の乱数を生成できます。


#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::normal_distribution<double> dist(0.0, 1.0); // 平均0, 標準偏差1
    
    for (int i = 0; i < 5; ++i) {
        std::cout << dist(gen) << "\n";
    }
    return 0;
}
    

t分布に従う乱数

std::student_t_distribution を使うことで、t分布の乱数を生成できます。


#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::student_t_distribution<double> dist(10.0); // 自由度10
    
    for (int i = 0; i < 5; ++i) {
        std::cout << dist(gen) << "\n";
    }
    return 0;
}
    

対数正規分布に従う乱数

std::lognormal_distribution を使うと、対数正規分布に従う乱数を生成できます。


#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::lognormal_distribution<double> dist(0.0, 1.0);
    
    for (int i = 0; i < 5; ++i) {
        std::cout << dist(gen) << "\n";
    }
    return 0;
}
    

二項分布に従う乱数

std::binomial_distribution を使うことで、二項分布の乱数を生成できます。


#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::binomial_distribution<int> dist(10, 0.5); // 試行回数10, 成功確率0.5
    
    for (int i = 0; i < 5; ++i) {
        std::cout << dist(gen) << "\n";
    }
    return 0;
}
    
コメントは受け付けていません。