c语言随机数生成(rand,srand,time)

简介: c语言随机数生成(rand,srand,time)

📢 :c语言随机数生成

一,rand函数和srand函数和time函数的联系

  rand函数能够生成一个随机数,因为rand函数每次都会调用srand函数来决定随机数的起始值,所以可以通过改变srand来控制随机数起始值,如果要是不主动实现srand函数的话,rand会自动调用srand函数,但是这样会导致srand的值一直不变,普遍的做法是主动实现srand,从而使得rand函数的返回值达到真正的随机。但是srand函数需要传入一个有变化的参数,这个参数就可以了使用time函数。

  time函数的作用是返回一个时间戳(也就是1970年1月1日至今所经历的秒数),这样能使这个时间戳不断在变化,所以真正决定这个起始值的是time函数。srand只是rand和time的桥梁。

📢 :接下来我们分别看看这三个函数 :

二,scrand函数 :

✨先看一看srand的函数原型 :

void srand (unsigned int seed);

  • 参数是一个无符号的int类型的种子(seed),这也就解释了为什么rand函数的下界是0
  • srand函数能够决定rand产生的随机数的起始值 。
  • 如果种子值不变的话,会导致rand每次出现的值都不变(不同进程调用rand返回值不变,但是同一进程的多次调用rand返回值是变化的)。下面代码展示 :

✨✨可以看到,每次运行后值都是不变的。所以我们就需要让种子seed不断在变化,就用到了time函数。

三,time函数 :

  time的函数原型如下 :

time_t time (time_t* timer);

⭐️返回一个time_t类型。

✨参数是一个time_t类型的指针,返回值存储在这个指针里面,当然,也可以传入一个空指针,这两种说法下面代码展示 :

#include <stdio.h>
 #include <time.h> 
int main()
 {
      time_t a;
      time_t b;
      //第一种使用方式
     time(&a); 
    //第二种使用方式
     b = time(NULL);  
      
  printf("t1=%ld\n",a); 
  printf("t2=%ld",b);
      
        return 0;
 }
 //两种方法返回值相同。

使用它必须包含头文件 :#include <time.h>

  所以我们把srand函数和time函数一结合,就变成了 :srand((unsighed int )time(NULL)) ;

因为time返回的是time_t类型的,所以得把他强转成unsighed 类型的。

四,rand函数 :

下面是它的函数原型 :

int rand (void);

⭐️返回一个int类型的值,没有参数。

  rand()函数每次调用前都会检查是否调用过srand函数,如果有,就会使用srand来为自己初始化自己的值。若之前没有调用srand函数,那么会自动给seed赋初始值,即srand(1)自动调用它。

如何给随机数限定范围 ?

  • 可以通过取余来限制最大值,如 :
    int rand_number = rand() % 100 ;
    此时的rand_number的最大值不超过100(因为超过100就会向前进位,大家细细想想就能理解)。
    那么要是想取范围为[10,100],该怎么表达呢?这句话也就是范围最大值不超过101,所以可以写成int rand_number = rand() % 101 ;最小值的实现可以整体加上10来实现,但是整体加上10的话,最大值也会增加10,可以这么表达 :int rand_number = rand() % 91 + 10;)这句意思范围是 [10,(91+10) - 1] ,也就是 :[10,100]。
  • 下面给出函数的简单实现代码,大家可以复制在编译器自己运行试试 :
#include <stdio.h>
#include <stdlib.h> /* srand, rand */
#include <time.h>       /* time */
int main()
{
  srand((unsigned int)time(NULL));  
  //control();
  int i = 0;
  while (i < 10)
  {
    int a = rand()% 100;
    printf("%d  ", a);
    i++;
  }
  return 0;
}

😄新人创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看。😄

相关文章
|
6月前
|
C语言 C++
【C语言】rand()函数(如何生成指定范围随机数)
【C语言】rand()函数(如何生成指定范围随机数)
252 0
|
6月前
|
算法 编译器 C语言
你知道C语言中随机数是如何生成的吗~?
你知道C语言中随机数是如何生成的吗~?
|
5月前
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
|
5月前
|
算法 编译器 C语言
【C语言】:详解随机数的生成和猜数字游戏的实现
【C语言】:详解随机数的生成和猜数字游戏的实现
100 0
|
6月前
|
算法 C语言 数据安全/隐私保护
C语言如何生成随机数?
C语言如何生成随机数?
C语言如何生成随机数?
|
6月前
|
C语言
史上最简单的C语言猜数字小游戏(1—100随机数)
史上最简单的C语言猜数字小游戏(1—100随机数)
|
19天前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
30 3
|
9天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
30 10
|
3天前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。