对随机数的使用较少,因此没有深入了解过其产生原理。这里涉及到两个函数,rand()和srand(),前者是生成一个伪随机数,后者是生成一个随机种子。
rand()可以生成一个0~RAND_MAX之间的一个随机数,返回值是一个unsigned int类型值。如下代码:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{
for (int i = 0; i < 10; ++i)
{
cout<<rand()<<" ";
}
cout<<endl;
}
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{
srand((int)time(0));
for (int i = 0; i < 10; ++i)
{
cout<<rand()<<" ";
}
cout<<endl;
}
至于伪随机数与随机种子是通过什么样子的函数计算得出最后的随机数,则存在很多的函数,我也没有深入研究这个了。
虽然随机数rand()的返回值在0~RAND_MAX之间,但是我们有时候希望还能够具体控制一下产生的随机数的范围,于是,我们可以通过取余的方法来得到这种效果。
3、产生[a,b]上的随机数 ((double)rand()/RAND_MAX)*(b-a) + a ,其中(double)rand()/RAND_MAX)可以得到一个0~1的随机数
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{
srand((int)time(0));
for (int i = 0; i < 10; ++i)
{
cout<<((double)rand()/RAND_MAX)*(60 - 50) + 50<<" "; //获取50~60之间的随机数
}
cout<<endl;
}