gpt4 book ai didi

当我在 Visual Studio 中运行程序时,C++ 随机数生成器通常会在 2 次后停止生成数字

转载 作者:行者123 更新时间:2023-11-30 05:02:38 26 4
gpt4 key购买 nike

您好,我是编码方面的新手(计算机编程入门),我应该编写一个代码来生成一个随机数 (1-3),以便选择要显示的表格,并且它不能重复。但是,每当我运行该程序(在 visual studio 上)时,它通常在前 2 次运行完美,然后在第三次程序暂停,我只剩下 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);
}

最佳答案

花时间将随机生成器与 c++11 未弃用的库一起使用,避免所有陷阱。

http://en.cppreference.com/w/

下面是一个示例,说明如何创建一个生成器,该生成器将返回 (m, n) 之间的整数,包括两者:

#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

关于当我在 Visual Studio 中运行程序时,C++ 随机数生成器通常会在 2 次后停止生成数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49769391/

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