C/C++ 随机数生成的几种方法

C Style (srand, rand)

缺点:srand(time(0)) 在较短时间间隔内不会改变。

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
    srand(time(0));
    for (int i = 0; i < 10; i++) {
        cout << rand() << endl;
    }
    return 0;
}
1318042169
215619879
272650
607238762
43966714
1763422509
1703932261
1548025279
1025366738
1664469656

C++11 <random>

如果想要生成浮点随机数,可将第10行uniform_int_distribution 换位uniform_int_distribution ,int 换为double 。

然而并不常用……

#include <iostream>
#include <random>


using namespace std;

int main() {
    mt19937 rng;
    rng.seed(random_device()());
    uniform_int_distribution<int> dist6(1, 1e6);
    for (int i = 0; i < 10; i++) {
        cout << dist6(rng) << endl;
    }
    return 0;
}
586472
666710
433629
366199
589288
233130
126209
308218
689267
733495

 

暂时只知道了这两种。

CC BY-NC-SA 4.0 本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注