我是C ++的新手,我正在尝试使用Die类/ main进行简单的掷骰。
我可以在我的范围1-dieSize中获得一个随机数,但是,每次我“滚动骰子”时它只给我相同的随机数。例如,当我掷骰子三次时,它会输出111或222等,而不是3个不同的随机卷。任何帮助解释这个问题都将非常感谢!
我的模头只是一个基本标题。我假设我的问题是使用随机函数。
主:
int main()
{
// Call menu to start the program
Die myDie(4);
cout << myDie.rollDie();
cout << myDie.rollDie(); // roll dice again
cout << myDie.rollDie(); // roll again
return 0;
}
die.cpp:
Die::Die(int N)
{
//set dieSize to the value of int N
this->dieSize = N;
}
int Die::rollDie()
{
// Declaration of variables
int roll;
int min = 1; // the min number a die can roll is 1
int max = this->dieSize; // the max value is the die size
unsigned seed;
seed = time(0);
srand(seed);
roll = rand() % (max - min + 1) + min;
return roll;
}
在die.cpp中,我包含了cstdlib和ctime。
答案 0 :(得分:0)
正如评论中提到的melpomene,你应该在程序的某个时刻初始化随机的seed
一次。
rand()
函数实际上不是随机数创建者,而是先前生成的值的一系列位操作,它以种子生成的第一个值开始(调用srand(seed)
)
#include <iostream>
#include <cstdlib>
int rollDie()
{
int roll;
int min = 1; // the min number a die can roll is 1
int max = 6;// this->dieSize; // the max value is the die size
roll = rand() % (max - min + 1) + min;
return roll;
}
int main()
{
srand(time(0));
for(int i=0;i<10;i++)
{
std::cout << rollDie() << std::endl;
}
}
您很可能已经在使用C ++ 11,因此您应该阅读并练习随机库:http://en.cppreference.com/w/cpp/numeric/random