如何在C ++中生成随机数?

如何在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"; 

}

效果不好,因为当我运行程序几次时,这是我得到的输出:


6

1

1

1

1

1

2

2

2

2

5

2

所以我想要一个每次都会产生不同随机数的命令,而不是连续5次产生不同的随机数。有没有命令可以做到这一点?


鸿蒙传说
浏览 1696回答 3
3回答

呼如林

测试应用程序的最基本问题是您调用srand一次,然后调用rand一次并退出。整个srand功能点是用随机种子初始化伪随机数序列。这意味着如果您将相同的值传递给srand两个不同的应用程序(具有相同srand/&nbsp;rand实现),那么您将获得完全相同的rand()值序列。但是你的伪随机序列只包含一个元素 - 你的输出由不同的伪随机序列的第一个元素组成,这些元素以1秒精度的时间播种。那你期望看到什么?当您碰巧在同一秒运行应用程序时,您的结果当然是相同的(正如Martin York在答案评论中已提到的那样)。实际上你应该拨打srand(seed)一次,然后rand()多次打电话并分析这个序列 - 它应该是随机的。
打开App,查看更多内容
随时随地看视频慕课网APP