如何在C ++中生成随机数?我正在尝试用骰子制作游戏,我需要在其中有随机数字(模拟模具的两侧。我知道如何在1到6之间进行)。运用#include <cstdlib> #include <ctime> #include <iostream>using namespace std;int main() { srand((unsigned)time(0)); int i; i = (rand()%6)+1; cout << i << "\n"; }效果不好,因为当我运行程序几次时,这是我得到的输出:611111222252所以我想要一个每次都会产生不同随机数的命令,而不是连续5次产生不同的随机数。有没有命令可以做到这一点?
3 回答
呼如林
TA贡献1798条经验 获得超3个赞
测试应用程序的最基本问题是您调用srand
一次,然后调用rand
一次并退出。
整个srand
功能点是用随机种子初始化伪随机数序列。这意味着如果您将相同的值传递给srand
两个不同的应用程序(具有相同srand
/ rand
实现),那么您将获得完全相同的rand()
值序列。但是你的伪随机序列只包含一个元素 - 你的输出由不同的伪随机序列的第一个元素组成,这些元素以1秒精度的时间播种。那你期望看到什么?当您碰巧在同一秒运行应用程序时,您的结果当然是相同的(正如Martin York在答案评论中已提到的那样)。
实际上你应该拨打srand(seed)
一次,然后rand()
多次打电话并分析这个序列 - 它应该是随机的。
- 3 回答
- 0 关注
- 1695 浏览
添加回答
举报
0/150
提交
取消