c语言如何设置随机数及逐行解析

 更新时间:2022年11月11日 10:45:06   作者:菜花籽  
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,下面这篇文章主要给大家介绍了关于c语言如何设置随机数及逐行解析的相关资料,需要的朋友可以参考下

一.产生随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
	int n = 0;
	srand((unsigned int)time(NULL));
	n = rand();
	printf("产生一个随机数 %d", n);
	return 0;
}

运行结果

二.逐行解析

1.rand()函数

在我的MSDN里,rand()函数的返回值是int,头文件是stdlib.h

这句话的意思是:rand函数返回一个伪随机数,如果超出范围,则返回错误。rand的范围是0 到RAND_MAX(0到32767)

这里值得注意的是什么是伪随机,下面举个例子

我们不难看出虽然打印随机数,但每次打印的随机数都一样,所以怎么办呢?我们就需要一个随机数种子strand啦

2.srand()函数

srand的返回值是void,里面传参需要一个unsigned int类型的seed(种子),我们可以看出其实这就是一个设置种子的函数,那么我们设置什么种子呢?

因为我们想要的随机数时时刻刻都要改变,那么毫无疑问就时间是在无时无刻都在改变的,所以我们设置一个时间种子

3.time()函数

time函数的返回值类型是(time_t),但我们要按照srand函数的要求将其强制转化为(unsigned int)。它的头文件是time.h。它所需要的参数是一个指针,但我们并不需要给它传参,所以我们用(NULL)

time函数返回的值是每时每秒,所以它的值是变化的
最终我们就写出了一个时间种子srand((unsigned int)time(NULL))

三.生成有范围的随机数

有时候,随机数生成的范围太大了,我们该怎么缩小它的范围呢?

由此不难看出其实我们需要哪个范围,只需要rand()%n,就可以了

原理也很简单,一个随机数%100那么它的值就会是0-99

总结

到此这篇关于c语言如何设置随机数及逐行解析的文章就介绍到这了,更多相关c语言设置随机数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • opencv帧差法找出相差大的图像

    opencv帧差法找出相差大的图像

    这篇文章主要为大家详细介绍了opencv帧差法找出相差大的图像,包含访问mat的像素值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C++中各种可调用对象深入讲解

    C++中各种可调用对象深入讲解

    这篇文章主要给大家介绍了关于C++中各种可调用对象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • c语言strftime时间格式化示例

    c语言strftime时间格式化示例

    C/C++程序中需要程序显示当前时间,可以使用标准函数strftime,本文提供一个示例供大家参考
    2014-02-02
  • C语言实现交换排序算法(冒泡,快速排序)的示例代码

    C语言实现交换排序算法(冒泡,快速排序)的示例代码

    这篇文章主要为大家详细介绍了如何利用C语言实现交换排序算法(冒泡排序、快速排序),文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-07-07
  • C++14 新特性之函数返回值类型推导

    C++14 新特性之函数返回值类型推导

    本文主要介绍了C++14 新特性之函数返回值类型推导,在模板编程和一些返回类型复杂或不易直接指明的情况下非常有用,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-05-05
  • C++设计一个简单内存池的全过程

    C++设计一个简单内存池的全过程

    利用C/C++开发大型应用程序中,内存的管理与分配是一个需要认真考虑的部分,下面这篇文章主要给大家介绍了关于C++设计一个简单内存池的全过程,需要的朋友可以参考下
    2021-09-09
  • C++语言pow函数的具体使用

    C++语言pow函数的具体使用

    本文主要介绍了C++语言pow函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • C语言十进制转二进制代码实例

    C语言十进制转二进制代码实例

    这篇文章主要介绍了C语言十进制转二进制代码实例,并且转换后会统计二进制1的个数,实例简单明了,需要的朋友可以参考下
    2014-06-06
  • OpenCV实现相机标定示例详解

    OpenCV实现相机标定示例详解

    相机标定是图像处理的基础,现在市面上买到的相机,都存在着或多或少的畸变。本文将介绍如何利用一系列棋盘照片进行摄像机标定的,感兴趣的小伙伴可以关注一下
    2021-11-11
  • c++ 如何在libuv中实现tcp服务器

    c++ 如何在libuv中实现tcp服务器

    这篇文章主要介绍了c++ 如何在libuv中实现tcp服务器,帮助大家更好的理解和使用libuv,感兴趣的朋友可以了解下
    2021-02-02

最新评论