c++ - 为什么 rand 没有在我的代码中产生随机数?
问题描述
我想随机化变量 a 和 b,以 a、b 的格式输出随机数 1 到 4。但是,当我运行以下代码时,无论我运行多少次,输出总是相同的。例如,输出始终为:4,3(相同的输出显示 10 次。)
我在这里做错了什么?有人可以指出我正确的方向吗?谢谢!
#include <iostream>
using namespace std;
int main()
{
int x;
int a, b;
a= rand() % 4 + 1;
b= rand() % 4 + 1;
x = 0;
while (x < 10) {
x++;
cout << a << "," << b << endl;
}
return 0;
}
解决方案
我在这里做错了什么?有人可以指出我正确的方向吗?谢谢!
您正在设置一次a
,b
因此它们具有相同的值。要解决此问题,请将它们设置在循环内,以在每次迭代时赋予它们一个新值:
while (x < 10) {
x++;
a = rand() % 4 + 1;
b = rand() % 4 + 1;
cout << a << "," << b << endl;
}
如果您不希望每次都使用相同的值,则可以调用
srand(time(0)); // before the loop
推荐阅读
- groovy - Maven-surefire 没有运行带有 @Tag 注释的 Spock 测试
- jooq - 如何从 SQL 查询配置 jOOQ 可嵌入类型
- swift - 如何从 alamofire 发布请求中使用 switfyJson 填充 UItableview 中的单元格
- c - 尽管创建了有效的文件描述符,但在使用管道时使用 dup2 失败
- javascript - 使用 Esprima 检测缺少的分号解析 JavaScript
- vue.js - 路由器视图中的 Vue 路由器 addRoute 空白
- xml - 向另一个 API 发送 SOAP 请求?
- python - 如何使用列表中包含的另一列中的单词创建熊猫列
- python - 在嵌套的 for 循环中添加数据框列
- docker - 如何配置 docker-compose.yml 以将 passbolt 与 docker-compose 一起使用?