c++ - 为什么 rand() 一直给出相同的值?
问题描述
每次调用该函数时,它总是“number = 5”。该数字始终保持 5。我已经检查过它以确保 srand 仅在我感到困惑时才运行一次。这是类内部的一个函数。
int playType::getComputerMove(){
int number;
if(gamesPlayed == 0){
srand(time(NULL));
}
number = rand() % 1 + 5;
return number;
}
解决方案
您的问题是操作顺序。rand() % 1
是在加五之前解决的。因为n % 1 = 0
,你总是会得到 5。本质上,正在发生的事情是这样的:
number = (rand() % 1) + 5;
为了解决这个问题,您需要以这种方式添加括号:
number = rand() % (1 + 5);
推荐阅读
- stripe-payments - Stripe - 在不同国家以不同货币支付
- r - 基于指数分布生成故障
- r - 计算字符串在列中出现的次数
- javascript - 从后端(nodejs)向前端(reactjs)发送错误消息的问题
- oracle - oracle如何在游标块中捕获sql查询中的错误
- javascript - 错误 400 身份验证问题 Curl 到 Axios
- html - HTML - 浮动 3 个表格并排,但下方有文本
- .htaccess - 使用 htaccess 重写一个 get 变量
- java - 这个布尔值中的“num”如何变为 6?
- c# - C# - string[] 不包含“SkipLast”的定义并且没有可访问的扩展方法