你好我对编码比较新(在计算机编程的介绍中)我应该写一个生成随机数(1-3)的代码,目的是选择要显示的表,并且它不能重复。然而,每当我运行该程序时(在visual studio上)它通常会在前两次完美,然后第三次程序暂停,我在Windows控制台中使用闪烁的短划线。我确定我只是错过了一个愚蠢的错误,但这完全是为了学习。
我在线阅读最好将srand(time(NULL));
从循环中取出并将其放在main的开头,以便我做的事情。
srand(time(NULL));
int beginGame(int playedBoard[])
{
int randomNum;
do
{
randomNum = (rand() % (3 - 1)) + 1;
if (playedBoard[randomNum - 1] == NULL)
return randomNum;
} while (playedBoard[randomNum - 1] != NULL);
}
答案 0 :(得分:1)
花时间使用带有c ++ 11,不推荐使用的库的随机生成器,避免所有陷阱。
下面是一个如何创建一个将在(m,n)之间返回int的生成器的示例:
#include <random>
#include <limits>
auto int_generator(int lower_bound_inclusive =
std::numeric_limits<int>::min(),
int upper_bound_inclusive =
std::numeric_limits<int>::max()) {
int const lbi = lower_bound_inclusive;
int const ubi = upper_bound_inclusive;
static std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int>
dist(lbi, ubi);
return [dist, mt]() mutable { return dist(mt); };
}
用法:
auto dice = int_generator(1, 6); //Generate a random number generator that yields numbers between 1 and 6 inclusive
dice(); //One random number
dice(); //Another random number