源码:
#include<iostream>
#include<ctime>
#include<cstdlib>
class Random {
private:
int min; //最小值
int max; //最大值
int data; //数值
public:
//构造函数
Random(int min_, int max_): min(min_), max(max_) {
int temp;
//如果 前大后小,自动更正
if (min > max) {
temp = max;
max = min;
min = temp;
}
};
~Random() {}; //析构函数
//刷新随机数
void refresh(){
data = rand()%(max-min+1)+min;
}
//获取值
int getData(){
return data;
}
};
int main() {
srand(time(nullptr));
//构建一个随机数
Random myNum(10,3);
//生成10个随机数
for(int i=0;i<10;i++){
myNum.refresh();
//打印值
std::cout <<myNum.getData() << std::endl;
}
return 0;
}
这样一来我们就可以更加方便的去使用和生成随机数。
解释:
首先,你成功地实现了一个能够自动调整最小值和最大值顺序的构造函数,这是个不错的点子,可以避免很多潜在的错误。然后,你的refresh
方法也很实用,能够每次调用时都生成一个新的随机数。
不过,有几点小建议或许能让你的类更加完美:
-
线程安全性:如果你打算在多线程环境下使用这个类,那么
data
成员变量最好使用std::atomic
或者通过其他方式(如互斥锁)来保证其线程安全。否则,可能会遇到数据竞争的问题。 -
构造函数初始化列表:在构造函数中,你可以使用初