一个C++的随机类

简介

在C#和Java中都有Random类可以很方便地实现多种不同类型的数据的随机,在C++中没有这个类。因此本文提供了一个C++的Random类以实现相应的功能。

在代码中,定义了一个私有的函数 unsigned int r() 作为最核心的随机数生成函数,本文通过这个函数实现了整型和浮点型的随机三个函数,如果有其他需要,可以根据自身需要进行进一步扩展。

源代码

所有源代码如下所示:


//
// Created by hao on 2020-08-09.
//

#ifndef RANDOMDEMO_RANDOM_H
#define RANDOMDEMO_RANDOM_H

#include 
#include 
#include 
#include 
#include 

using namespace std;

class Random {
private:
    unsigned int r() {
        static mt19937 r(time(0));
        return r();
    }
public: 
    int nextInt(int range) {
        return r() % range;
    }

    int nextInt(int start, int end) {
        if (start > end) {
            int t = start;
            start = end;
            end = t;
        }
        return r() % (end - start) + start;
    }
    
    double nextDouble() {
        return r() % 100000000 / 100000000.0;
    }
};

#endif //RANDOMDEMO_RANDOM_H

测试代码

主程序进行调用。


char *randStr(const int len) {
	Random rand;
    auto chs = new char[len + 1];
    for (int i = 0; i < len; ++i)
        chs[i] = 'A' + rand.nextInt(26);
    chs[len] = '\0';
    return chs;
}


int main() {
    for (int i = 0; i < 10; ++i) {
        cout << rand.randInt(100) << endl;
    }

    for (int i = 0; i < 10; ++i) {
        cout << rand.randInt(10, 20) << endl;
    }
    return 0;
}

输出


79
73
2
92
64
27
93
15
65
6
19
13
12
12
14
17
13
15
15
16

Process finished with exit code 0

你可能感兴趣的:(C/C++)