C风格
C为随机数提供的工具是rand、srand和RAND_MAX,定义在中。
srand为rand设置种子,如果不设置,相当于调用过srand(1)。rand产生伪随机数,其范围为0到RAND_MAX,RAND_MAX至少是32767,在MSVC和GCC中这个值都是32767。
伪随机数看似随机,实则是有规律可循的,对于相同的种子值,rand产生的序列完全相同,也就是说无论你给srand一个什么数字,多次运行程序的结果都将相同——除非你给srand的是不同的数字,比如时间。中的time函数返回整数表示的系统时间,可用于设置种子。
如果我们只需要0到9的随机数,可以把rand的返回值% 10;如果是42到233,可以写rand() % 192 + 42。下面的random函数封装了这项工作。注意只有在b - a + 1远小于或整除RAND_MAX时随机数的分布才比较均匀。
#include
#include
#include
int random(int a, int b)
{
return rand() % (b - a + 1) + a;
}
int main()
{
srand(time(NULL));
printf("RAND_MAX = %d\n", RAND_MAX);
for (int i = 0; i < 10; i++)
printf("%d ", rand());
printf("\n"