C++创建相同的随机值的对象数组
C++ create object array same random value
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
class A{
int x;
public:
void setX(){
srand( time(NULL));
x = rand() % 15;
}
int getX(){
return x;
}
};
int main()
{
A dizi[5];
for(int i = 0; i < 5;i++){
dizi[i].setX();
cout<<dizi[i].getX()<<endl;
}
}
或
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
class A{
int x;
public:
void setX(){
srand( time(NULL));
x = rand() % 15;
}
int getX(){
cout<<x<<endl;
}
};
int main()
{
A dizi[3];
dizi[0].setX();
dizi[1].setX();
dizi[2].setX();
dizi[0].getX();
dizi[1].getX();
dizi[2].getX();
}
x 始终打印相同的值。如何为数组的每个对象分配不同的随机值。
我试过 srand(time (0)) 和 srand(time (NULL))
但他们没有工作。
每个类实例都会产生相同的随机值,为什么?
来自C++文档:http://www.cplusplus.com/reference/cstdlib/srand/
对于调用 srand 时使用的每个不同种子值, 伪随机数生成器可以预期生成不同的 在随后对兰德的调用中连续的结果。
具有相同种子的两个不同初始化将生成 在随后对兰德的调用中,结果的相同连续性
将 srand() 视为基于给定种子的随机数列表。由于您一直给它相同的种子,因此所有 rand() 调用都将获得列表中的第一个元素。解决方案是只调用 srand() 一次,每次要给 X 赋值时使用一次 rand() 调用
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组