我有一个C ++赋值来在C ++中创建一个更随机的随机数生成器。具体细节可以找到:http://www.cplusplus.com/forum/beginner/97056/。
每次尝试访问私有数据部分中的向量时,我都会收到错误消息,但我无法弄清楚原因?
我也在使用我们单独创建的复杂Double和Integer类。
标题文件:
#ifndef RANDOM
#define RANDOM
#include "Double.h"
#include "Integer.h"
#include <vector>
#include <iostream>
#include <time.h>
const int VECT_SIZE =250;
const int PERCENT = 225;
class Random
{
private:
std::vector<double> vect(int(VECT_SIZE));
void fillVect(double min, double max);
void shuffle();
int index;
public:
Random(); // Default constructor
Random(double min, double max);
Random(Double min, Double max);
Random(int min, int max);
Random(Integer min, Integer max);
Random(int seed); //seed the random number generator
int nextInt(); // Returns the next random number as an int
double nextDbl();
void setRange(double min, double max);
Integer nextInteger();
Double nextDouble();
};
#endif
似乎有错误的主要类的部分:
void Random::fillVect(double min, double max)
{
for(int i = 0; i < VECT_SIZE; i++)
{
this->vect.push_back((((double)rand()/(double)RAND_MAX)*(max - min)) + min);
}
shuffle();
}
void Random::shuffle()
{
index =0;
for (int i = 0; i <100; i++)
{
int r = rand() % VECT_SIZE;
this->vect.push_back(vect[r]);
}
}
似乎有错误的主要类的部分:
Random::Random(double min, double max)
{
vect.clear();
fillVect(min, max);
}
似乎有错误的主要类的部分:
double Random::nextDbl()
{
if(index>PERCENT)
{
this->shuffle();
}
index++;
return this->vect[index];
}
答案 0 :(得分:1)
您对vect
的声明目前是int
并返回vector<double>
的函数。大多数(所有?)好的编译器应该发出警告,并提供可能的解决方案。
将声明更改为:
std::vector<double> vect = std::vector<double>(int(VECT_SIZE));