Rand函数返回值
0~C++中所能表示的无穷大
Rand函数返回值类型
Unsigned int型无符号整型变量
Rand函数的参数
无
问题来了,我们每次运行得到的结果都一样,难道这个不是随机数吗?为什么没有随机的性质?
我们会发现,改变srand(InputVar)中输入参数的值,可以产生不同的随机数结果,但是问题又来了:每一个随机数种子对应一个特定的随机数,这样的随机数也不具有随机的属性呀?
这样我们所输出的random才是真正的随机数,这是为什么呢?
Time(NULL)的作用
返回从1970年1月1日0时0分0秒到现在的秒数
因此,当时间每分每秒的过去,我们的time(NULL)返回值也会出现不同,由于返回值不同,srand(InputVar)产生的随机数种子也不同。
我们有以上程序可以得到0~a之间的任意随机无符号整数,那么我们可以通过除以10^n的形式,将整数转化为小数:
#include <iostream> #include <stdlib.h> #include <ctime> using namespace std; int main() { srand(time(NULL)); float random = (float)(rand() % 100) / 100; // 由取余和除法的性质可知,这会产生0~1之间的任意无符号小数 cout << random << endl; }
但是我们需要注意的是:我们必须要将rand()%a进行强制类型转换,否则默认返回值为unsigned int型。