C语言 随机数
time、rand、srand
#include <time.h>
time_t time(time_t *t);
功能:获取当前系统时间
参数:常设置为NULL
返回值:当前系统时间, time_t 相当于long类型,单位为毫秒
#include <stdlib.h>
void srand(unsigned int seed);
功能:用来设置rand()产生随机数时的随机种子
参数:如果每次seed相等,rand()产生随机数相等
返回值:无
#include <stdlib.h>
int rand(void);
功能:返回一个随机数值
参数:无
返回值:随机数
案例
#include <stdio.h>
#include <time.h>
#include <stdlib.h> int main()
{
time_t tm = time(NULL);//得到系统时间
srand((unsigned int)tm);//随机种子只需要设置一次即可 int r = rand();
printf("r = %d\n", r); return ;
}
使用案例
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h> int main(void)
{
// 添加随机数种子
srand((size_t)time(NULL));
for (size_t i = ; i < ; i++)
{
// 输出一个随机数
// 获取0-99:rand()%100
// 获取50-100:rand()%51+50
printf("%d\n", rand()%);
}
return ;
}
使用案例:输出随机数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h> int main(void)
{
// 双色球 6个红球 1-32、1个蓝球 1-16
srand((size_t)time(NULL));
int arr[] = { };
int value = ;
int flag = ;
int j;
// 取红球
for (int i = ; i < ; i++)
{
value = rand() % + ;
// 去重
for (j = ; j < flag; j++)
{
if (value==arr[j])
{
i--;
break;
}
}
// 加入数组
if (j==flag)
{
arr[flag] = value;
flag++;
}
}
// 输出结果
for (int i = ; i < ; i++)
{
printf("%d ", arr[i]);
}
// 取蓝球
printf("+ %d\n", rand() % + );
return ;
}
使用案例:双色球