C语言生成随机数问题

简介: rand()函数是专门用来生成随机数的rand()返回的是0~RAND_MAX(32767)之间的随机数rand()函数在头文件stdlib.h中,使用前要导入这个头文件因为rand默认生成随机数范围是0~32767,这是一段很大的范围,所以我们需要限制随机数范围:rand()%100+1 范围:1~ 100 因为任何一个数字,模100,得到结果的范围是0~99,在加1,范围就是1 ~ 100

C语言生成随机数问题

rand函数

srand函数

时间戳和time()函数

最终代码:

rand函数


rand - C++ Reference (cplusplus.com)


rand()函数是专门用来生成随机数的

rand()返回的是0~RAND_MAX(32767)之间的随机数

rand()函数在头文件stdlib.h中,使用前要导入这个头文件

因为rand默认生成随机数范围是0~32767,这是一段很大的范围,所以我们需要限制随机数范围:rand()%100+1 范围:1~ 100 因为任何一个数字,模100,得到结果的范围是0~99,在加1,范围就是1 ~ 100

int num = rand()%100+1;
printf("%d", num);

1

2

此时rand的确生成了随机数,但是每次生成的随机数都是固定值,所以我们要在rand()前使用一个srand函数,来设置随机数生成器

srand函数


srand - C++ Reference (cplusplus.com)


srand函数的定义(官方):

void srand (unsigned int seed);
1
srand函数也在头文件stdlib.h中
srand的使用
srand(1);
int num = rand();
printf("%d", num);
1

2

3

在srand中传不同的值,re239d0fd47784146ae72a9903d440516.pngand会生成不同的值fd55ad74a58846d2ab04ed2b42ce8946.png



所以我们为了得到不同的随机值,我们要给srand()传一个时刻变化的值——时间


时间戳和time()函数


定义:时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

在C语言中,time()会返回时间戳 time - C++ Reference (cplusplus.com)

time()的定义(官方):

time_t time (time_t* timer);
1

time()函数在time.h的头文件里,使用前要导入这个头文件

time()函数的使用:

srand(time(NULL));
int num = rand();
printf("%d", num);

//这时,每次都会生成不同的随机数


但是这里会发现,每次生成的随机数都很相近,所以如果有循环生成随机数的要求,srand在程序中只需调用一次即可,不用重复调用,即把srand语句放到主函数里,生成随机数部分放到函数中

最终代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void test()
{
  int num = rand()%100+1;
  printf("%d\n", num);
}
int main()
{
  int n = 0;
  srand(time(NULL));
  printf("输入要生成随机数的个数:");
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
  {
  test();
  }
}



1

结果:7391917997294401a741ea67ad7522a8.png


目录
相关文章
|
C语言 C++
【C语言】rand()函数(如何生成指定范围随机数)
【C语言】rand()函数(如何生成指定范围随机数)
601 0
|
算法 编译器 C语言
C语言学习系列-->【关于随机数的实现】
C语言学习系列-->【关于随机数的实现】
153 0
|
算法 编译器 C语言
你知道C语言中随机数是如何生成的吗~?
你知道C语言中随机数是如何生成的吗~?
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
286 0
|
C语言
C语言生成随机数
C语言生成随机数
|
算法 C语言 数据安全/隐私保护
C语言如何生成随机数?
C语言如何生成随机数?
C语言如何生成随机数?
|
算法 编译器 C语言
【C语言】:详解随机数的生成和猜数字游戏的实现
【C语言】:详解随机数的生成和猜数字游戏的实现
262 0
|
C语言
史上最简单的C语言猜数字小游戏(1—100随机数)
史上最简单的C语言猜数字小游戏(1—100随机数)
150 0
|
存储 编译器 C语言
c语言随机数生成(rand,srand,time)
c语言随机数生成(rand,srand,time)
275 1
|
C语言
用C语言写一个猜随机数的小游戏
用C语言写一个猜随机数的小游戏
107 0