不是真正的随机
Not truly Random
本文关键字:随机 更新时间:2023-10-16
出于某种原因,我将在下面发布的代码并非完全随机。。。我使用了srand()
,试图使其随机。。我不知道为什么它表现得很奇怪。。。
#include<vector>
#include "../Header Files/SinglePlayer.h"
SinglePlayer::SinglePlayer()
{
}
int myRand(int low, int high)
{
srand(time(NULL));
return rand() % (high - low + 1) + low;
}
void SinglePlayer::startGame()
{
cout << "Starting Single Player........." << endl;
cout << "Starting out with two cards...." << endl;
int randomCardStarterOnePlayer = myRand(0,10);
int randomCardStarterTwoPlayer = myRand(0,10);
int randomCardStarterOneAI = myRand(0,10);
int randomCardStarterTwoAI = myRand(0,10);
this -> calculateRandomStarter(randomCardStarterOnePlayer,
randomCardStarterTwoPlayer,
randomCardStarterOneAI,
randomCardStarterTwoAI);
cout << "You Start out with " << amountPlayer << endl;
cout << "Computer Starts out with " << amountAI << endl;
}
void SinglePlayer::calculateRandomStarter(int randomOnePlayer, int randomTwoPlayer, int randomOneAI, int randomTwoAI)
{
amountPlayer = amountPlayer + randomOnePlayer + randomTwoPlayer;
playerCards.push_back(randomOnePlayer);
playerCards.push_back(randomTwoPlayer);
amountAI = amountAI + randomOneAI + randomTwoAI;
AICards.push_back(randomOneAI);
AICards.push_back(randomTwoAI);
}
SinglePlayer::~SinglePlayer()
{
}
结果:
~~~~~~二十一点
你想玩单人游戏还是多人游戏?(输入0表示单个玩家,1个用于多人游戏)
0
开始单人游戏。。。。。。。。。
从两张牌开始。。。。
你从2 开始
计算机启动时有2个
你可以看到播放器和电脑以相同的数字开始。。这种情况总是出于某种原因。。。我似乎看不出这个问题,请帮忙。
time(NULL)
以秒为单位返回时间,因为每次生成新数字时都会设置新的种子,所以(在大多数情况下)每次都可能设置与种子相同的数字。移动:
srand(NULL)
从main开始,或者在某个地方只调用一次。
听起来代码中的time(NULL)
返回了一些常量,并没有像您预期的那样调用std::time(NULL)
。如果是这样的话,您将从rand()
中正确生成一个随机数。
试着打印time(NULL)
的输出,并检查您是否真的得到了自epoch以来经过的秒数。如果没有,请确保包含<ctime>
并调用完全合格的srand(std::time(NULL))
。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 循环中的随机函数
- 在c++构造函数中使用随机字符串生成器
- 使用std::mt19937从字符串中返回一个随机单词
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 如何在C++中高效地构造随机骰子
- 在类中使用随机生成器时出现性能问题
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 将字符随机转换为大写的函数
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 如何生成一个随机的 n 位数,其中 n 是任意的
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 如何使用要传递给 mt19937 的可选随机种子参数设计函数
- 在C++中随机生成 20 个非重复数字
- GCC:随机构建导致执行期间分段错误
- 如何使用 SML 随机生成八进制元组
- 当我尝试使用它时,Scanf 会抛出一个随机异常(scanf_s 也是如此)
- 将正态随机变量与任意 RHO(corrcoef) 相关联