我正在使用 c++ stdlib 库通过 rand() 函数生成一个随机数,但每次编译时都会得到 41:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int a = rand();
cout<<a<<endl;
system("pause");
return 0;
}
我现在正在学习 C++,但我不知道自己做错了什么。
我正在使用 c++ stdlib 库通过 rand() 函数生成一个随机数,但每次编译时都会得到 41:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int a = rand();
cout<<a<<endl;
system("pause");
return 0;
}
我现在正在学习 C++,但我不知道自己做错了什么。
错误是你永远不会启动你必须处理的随机种子
之后,您可以调用
rand()
并获得不同的值。试试那个代码,它没有编译,但我相信它会工作。
另外我认为它
rand()
返回一个 0 - 1 之间的数字,这是 adouble
,所以你必须小心。Shassain的回答虽然有效,但并未提及随机数生成的重要部分。
的使用
std::rand
。该算法
std::rand
不是 C++ 规范的一部分,因此可能无法移植,结果和性能有问题,生成算法可能因实现而异,程序员几乎没有控制权。由于这个和其他原因,正在研究弃用。自 2011 年以来,C++ 标准库提供了标准的伪随机数生成实用程序。这些新实用程序允许程序员控制生成算法和分发。
提议。
考虑到上述情况,如果您使用
<random>
C++11 标头,您的代码可能如下所示:上面的代码已经生成了随机数(在指定的范围内),这些随机数在每次执行时都会有所不同,而无需注入种子。