gpt4 book ai didi

c++ - 伪随机整数

转载 作者:行者123 更新时间:2023-11-28 05:19:35 26 4
gpt4 key购买 nike

我正在尝试实现一个可以生成伪随机序列的类。

构造函数应将初始种子、乘数、增量和模数作为参数。一个成员函数应允许更改种子,一个函数应生成并返回伪随机序列中的下一个数字。

我的结果是错误的。我做错了什么,正确的实现应该是什么。

伪随机序列的头文件:

#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;
}

最佳答案

你的问题出在这里:

int pRandInt::getNextNum()
{
return (newMulti * newSeed + newIncr) % newMod;
}

如果您仔细观察该函数及其调用方式,您会发现这些值都没有改变。如果您愿意,通常(有些人会说有必要)改变其中一个值查看不同的输出。

我的建议是查看种子 :-)


除了实际为您编写代码(在尝试回答有关 SO 的明显教育问题时,我往往不赞成这样做),这就是我所能提供的尽可能多的帮助。但是,它应该更多足以让您自己解决。

关于c++ - 伪随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com