C语言随机函数
库函数中系统提供了两个函数用于产生随机数:srand()和rand()
- rand()函数可以生成一个[0,RAND_MAX]间的随机整数;(ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。)
- srand()可以被认为是为rand()的“伪随机数”的结果指定一个固定的序列,若未引用srand()函数,则程序默认srand()括号中的值为1;如果引用的话,srand()括号中不能为空;
- 为了确保生成的随机数为尽可能符合概率上的随机,需要调用一个函数time()(是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型),这个函数包含在头文件time.h里,在生成随机数的调用下需强制类型转换为(unsigned)time(),后面一个括号中必须填入(unsigned)time(NULL)或
(unsigned)time(0)。- n=rand()%(Y-X+1)+X; /n为X~Y之间的随机数/
练习题
1、生成一个10位数的QQ号
C实现程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
//10的m次幂
int f10m(int m)
{
if(m<0)
return -1;
int mul=1;
int i;
for(i=1;i<m+1;i++)
{
mul*=10;
}
return mul;
}
int myrand()
{
int a[10];
srand(time(NULL));
int randnum=0;
int i;
for