Я пытаюсь реализовать класс, который может генерировать псевдослучайную последовательность.Псевдослучайные целые числа
В качестве параметров конструктор должен иметь и начальное семя, множитель, приращение и модуль. Одна функция-член должна допускать изменение семени, одна функция должна генерировать и возвращать следующий номер в псевдослучайной последовательности.
Мои результаты ошибочны. Что я делаю неправильно, и какими должны быть правильные реализации.
Заголовочный файл для псевдослучайной последовательности:
#include<iostream>
using namespace std;
class pRandInt
{
public:
pRandInt();
//Default constructor with parameters
pRandInt(int, int, int, int);
//intial number in pseudorandom sequence
//permits the seed to be changed
void setFirstNum(int);
//generate the next number in the pseudorandom sequence
int getNextNum();
private:
int newSeed;
int newMulti;
int newIncr;
int newMod;
};
файл реализации для псевдослучайной последовательности:
#include "pRandInt.h"
pRandInt::pRandInt()
{
int newSeed = 0;
const int newMulti = 40;
const int newIncr = 725;
const int newMod = 729;
}
pRandInt::pRandInt(int seed, int multi, int incr, int mod)
{
newSeed = seed;
newMulti = multi;
newIncr = incr;
newMod = mod;
}
void pRandInt::setFirstNum(int seed)
{
newSeed = seed;
}
int pRandInt::getNextNum()
{
return (newMulti * newSeed + newIncr) % newMod;
}
Главный тестовый файл для псевдослучайной последовательности:
#include <iostream>
#include "pRandInt.h"
using namespace std;
int main()
{
int seed = 0;
pRandInt num;
num.setFirstNum(seed);
cout << "The first number in your sequence is: ";
cin >> seed;
cout << "The other numbers in your sequence are: ";
cout << num.getNextNum() << endl;
system("pause");
return 0;
}
Для какого-то конкретного ввода, какие результаты вы ожидали и какие результаты вы действительно получили? Вы пробовали переходить через код в отладчике? Что касается «правильной реализации», это будет использовать [стандартную функциональность C++ PRNG] (http://en.cppreference.com/w/cpp/numeric/random) и не пытаться реализовать свои собственные. –