C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。
比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int Test[10];
cout<<"RAND CASE"<<endl;
for(int i=0;i<10;i++)
{
Test[i]=rand()%50;
cout<<Test[i]<<" ";
}
cout<<endl;
cout<<endl;
cout<<"SRAND CASE"<<endl;
srand((unsigned)time( NULL ));
for(int i=0;i<10;i++){
Test[i]=rand()%50;
cout<<Test[i]<<" ";
}
return 0;
}
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生0~10的10个整数,可以表达为:
int N = rand() % 11;
a + rand() % n
其中的a是起始值,n是整数的范围。
此类推。
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。