3

特定の範囲で乱数(C++ 11)を生成し、いくつかの数値が発生する可能性を制御できることを知りたいです。セットに描画される可能性が 50% の数字「1」で、0 から 4 までの乱数を生成するとします。

4

3 に答える 3

8

範囲が [0, n) の場合は、 を使用できますstd::discrete_distribution

1 を 50% に設定する特定の例では、これを行うことができます。

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::discrete_distribution<> d({10, 50, 30, 10});
    for(unsigned i = 0; i < 10; ++i) {
        std::cout << d(gen) << '\n';
    }
}

std::piecewise_constant_distributionやのように使用できる他のサンプリング分布がありますstd::piecewise_linear_distribution<random>ヘッダー 内の他の多くの異なるディストリビューションと共に。

于 2013-08-14T20:12:32.560 に答える
1

std::discrete_distributionを探しています

于 2013-08-14T20:10:58.343 に答える