首页 > 其他分享 >C语言基础教程:C语言随机数

C语言基础教程:C语言随机数

时间:2023-01-28 21:31:41浏览次数:47  
标签:rand 函数 产生 C语言 种子 随机数 基础教程


1. 随机数概述

编写程序过程中,我们经常需要产生一些随机数。随机数在程序中分为两种:

  1. 真随机数:完全没有规则,无法预测接下来要产生的数。
  2. 伪随机数:通过一些预先设定好的规则产生不能简单预测的数。

当然,我们在程序中使用的随机数主要是伪随机,一般场景下,伪随机数能够满足我们大部分的场景了。本篇文章给大家介绍下,如何在C语言中产生一个伪随机数。

伪随机数在C语言中产生分为两个步骤:

  1. 设置随机数种子。
  2. 获得随机数。

设置随机数种子和获得随机数,我们需要使用两个函数。srand 函数 和 rand 函数。使用这两个函数需要导入头文件:#include <stdlib.h>

 

2. srand 函数用法

设置随机数种子时,我们一般会用时间值作为种子。这是因为时间值一直都在变化。我们使用 time 函数获得当前时间值,使用该函数需要先导入头文件 #include <time.h>。

C语言基础教程:C语言随机数_c++

打印出来的是一串数字,并不是我们常见的时间格式。Time 函数主要用于获得从 1970 年 1 月 1日0时 0分0秒到现在经历的秒数。时间一直在变,所以该函数可作为一直在改变的随机数种子。

所以,srand 函数的一个常用的用法就是:

C语言基础教程:C语言随机数_c++_02

srand 的要求的参数是 unsigned int,所以需要将 time 函数返回的结果强制转换成 unsigned int 类型。

3. rand 函数使用

设置好随机数种子,rand 函数就可以根据该值来产生随机数了。在 windows 的 vs 2019 平台上,默认该函数会产生一个 0 到 32767 之间的随机数。演示代码如下:

C语言基础教程:C语言随机数_c++_03

但是实际的场景是,我们希望产生一个指定范围内的随机数。此时,我们可以让随机产生数进行取余运算符,折算成指定范围。例如:我们要产生 1-100之间的随机数,可进行如下代码编写:

C语言基础教程:C语言随机数_编程语言_04

1. rand() % 100 会产生一个 0-99之间的数字。

2. rand() % 100 + 1 会产生一个 1-100之间的数字、

4. 随机数使用案例

我们下面做一个练习,创建一个包含10个元素的数组,使用 for 循环产生 10 个 1-10之间的随机数存储到数组中,并打印输出。

C语言基础教程:C语言随机数_随机数_05

注意:随机数种子设置一次即可。

标签:rand,函数,产生,C语言,种子,随机数,基础教程
From: https://blog.51cto.com/u_8238263/6025168

相关文章

  • C语言字符
    一、C语言字符​C语言中,凡\AAA表示的字符都是以ASCII码为八进制数AAA的字符这里的A表示任意小于8的数字凡\xAA表示的字符都是以ASCII码为​​十六进制数​​AA的字符这里的A......
  • vs2022创建c语言的dll项目
    1.创建项目  2.创建完成不需要删除自动生成的文件3.修改项目属性右键单击--->c/c++--->常规----->附件包含目录------>这里不用 c/c++----->预处理器------->......
  • 用C语言读取大文件的问题 内存映射
    Windows对文件的读写提供了很丰富的操作手段,如:1.FILE*fp,fstearm;(C/C++)2.CFile,CStdioFile;(MFC)3.CreateFile,ReadFile;(API)在处理一般的文件(文本/非文本),......
  • 范围内的完全数输出C语言代码
      #include<stdio.h>intmain(){ inti,j,n,he; i=1; printf("inputanumber:"); scanf("%d",&n); while(i<=n) { j=1;he=0; while(j<i) { if(i%j==0) ......
  • RTree源代码——C语言实现
    RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中......
  • C语言实现一个简单的单向链表list
    C语言实现一个简单的单向链表listcheungmine用C语言实现一个简单实用的单向链表list,具有一定的实际意义。尤其我们不想使用STL里面的list<...>类的时候。我实现的这个list,结......
  • 基于Oracle OCI的数据访问C语言接口ORADBI
    基于OracleOCI的数据访问C语言接口ORADBI​​[email protected]​​Mar.22, 2008 ORADBI是我在OracleOCI(Oracle调用接口)基础上开发......
  • A Template for C-Language Library Creation - 一个创建C语言运行库的模板
    ATemplateforC-LanguageLibraryCreation一个创建C语言运行库的模板WesupposethelibrarywewanttocreateislibElec.1)Createafolderinyourdisk,suchas......
  • C语言--简单的爱心代码
    新手都能敲出来的爱心代码#include<stdio.h>#include<stdlib.h>//#include<string.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1......
  • C语言经典100例【1、2】
    【1】三位数字重组问题题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析:分别把1,2,3,4放在个位、十位和百位,用嵌套循环即可解决。注......