使用C ++进行统一分发

时间:2014-08-31 16:58:46

标签: c++

我有两个变量RS。我将它们定义为int R[1000]int S[100000]R会保留0999的值。现在,我希望R值均匀分布在S100000值)中。 S中的条目数应为100000,但它们应均匀分布在0-999范围内。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用C ++ 11 STL快速填充RS来编写以下内容:

#include <numeric>
#include <random>

int main() {
    int R[1000], S[100000];
    std::iota( std::begin( R ), std::end( R ), 0 );
    std::mt19937 engine;
    std::uniform_int_distribution<int> dist( 0, 999 );
    std::generate( std::begin( S ), std::end( S ), []{ return dist( engine ); } );
}