C语言随机数与验证码的实现_c语言随机生成验证码_「已注销」的博客-程序员秘密

ps:最近写代码被量子力学编译器恶心到了 自家的编译器不同版本对.和->的要求还不一样 本地编译器结果3平台编译结果1 什么鬼设定(没错gcc我说的就是你个憨批)这还写个p的代码了?我直接整个随机数宁自己量子力学去吧

随机数的生成

首先,要说明的是通常情况下我们看到的函数生成的随机数不是真的随机数而是通过一定的“魔术算法”生成的伪随机数 那么为啥嘞?

rand与srand

函数功能:

int rand();//返回值为随机数,参数为空
int srand(unsigned int seed);//对伪随机序列进行初始化 

通俗的讲 在生成伪随机数之前要对伪随机序列进行初始化,即设置随机数种 如果不调用srand()的话 默认为srand(1) 而srand的参数又决定了随机数序列的顺序 也就是说如果srand的值保持不变那么 生成的随机序列的顺序也一直不变 所以伪随机数就“伪”在这里了 而一般来说我们又不会设置一个变化的变量传入到srand()中 所以要想真的随机 就要传入一个自变量 最常用的是时间

//#include <time.h>
time(NULL);//返回从1970.1.1日0点到现在经过的秒数

从time(NULL)的功能可知 其值每秒都会递增1 因此正适合作为随机数种

具体实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    
	int num;
	srand(time(0));
	for(int i=0;i<10;i++){
    
	    num=rand();	
	    printf("%d ",num); 
	} 
	return 0;
}

分别执行三次 其结果为在这里插入图片描述
在这里插入图片描述

在这里插入图片描述可见确实生成的是随机数

确定随机数的生成范围

如果想要生成某个范围内的随机数 需要用到 % 即取余
如果我们把代码改为

for(int i=0;i<10;i++){
    
	    num=rand()%100;	
	    printf("%d ",num); 
	} 

运行结果为在这里插入图片描述而如果改为

for(int i=0;i<20;i++){
    
	    num=rand()%100+20;	
	    printf("%d ",num); 
	} 

在这里插入图片描述可以看到
rand()%a 从0开始,最大范围为a
rand()%a+b 从b开始,最大值为a+b

随机验证码的生成

当我们了解了rand与srand的原理以及范围之后 生成随机验证码就十分简单了

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

int main(){
    
	char node[6];
	char eng[26]={
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
	int num1[6];
	int num;
	srand(time(0));
	for(int i=0;i<3;i++){
    
	    num=rand()%10;
		node[i]=num+'0';	
	} 
	for(int j=3;j<6;j++){
    
		num=rand()%26;
		node[j]=eng[num];
	}
	for(int i=0;i<3;i++){
    
		printf("%c",node[i]);
		printf("%c",node[3+i]);
	}
	return 0;
}

看一下结果
在这里插入图片描述在这里插入图片描述在这里插入图片描述

嗯 还是可以的
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kingdring/article/details/109543882

智能推荐

粒子群算法改进思路_fsfsfsdfsdfdr的博客-程序员秘密

粒子群算法的发展过程。粒子群优化算法(Partical Swarm Optimization PSO),粒子群中的每一个粒子都代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性.由于PSO操作简单、收敛速度快,因此在函数优化、 图像处理、大地测量等众多领域都得到了广泛的应用. 随着应用范围的扩大,PSO算法存在早熟收敛、维数灾难、易于陷入局部极值等问题需要解决,主要...

Android 命令行手动编译打包详解_hlllmr1314的博客-程序员秘密

原文出处:http://blog.csdn.net/yangwen123/article/details/8909058Android SDK提供了一系列命令行工具,用来进行Android应用的开发、调试、打包等工作!Eclipse能够进行Android应用开发的相关工作,也是调用了这些工具而已.只有掌握了命令下的工作方式,工作起来才会更加的得心应手.下面就抛开Eclipse集成开发工具,

js获取html中div里的标签id_网易云音乐(中)搭建后台管理端(admin页面)_weixin_39806808的博客-程序员秘密

上文中我们已经引入了七牛和LeadCloud数据库,下面来做整个后台页面。1.基本的页面的html,css布局,js &lt;div class="page"&gt; &lt;aside&gt; &lt;div class="newSong"&gt; &lt;/div&gt; &lt;div id="songL...

07、基于ADC0808/ADC0809的多通道电压采集程序设计_adc0808程序[email protected]的博客-程序员秘密

一、Proteus仿真电路图如下二、程序见附件也可加群免费获取三、全国大学生电子交流群(649692007)

python中缩进怎么打_用python缩进打印_weixin_39644377的博客-程序员秘密

我想你要找的是^{}模块:user = "Username"prefix = user + ": "preferredWidth = 70wrapper = textwrap.TextWrapper(initial_indent=prefix, width=preferredWidth,subsequent_indent=' '*len(prefix))message = "LEFTLEFTLEF...

微信公共平台(码农在努力)_weixin_30446613的博客-程序员秘密

微信app已经投入市场2年多了,我一直不太玩微信的,当初的感觉就hi这家伙是山寨 米聊的,内心有些BS.但!微信现在已经成为 国内最火的 app.仗着腾讯的5亿用户,自然人气很火,当然也沦为某某神器.手机 QQ2013最新版也俨然沦为了微信的儿子了(到底谁是谁儿子啊)而微信公共平台也成为了最好的营销平台,大街小巷中各种二维码等着你来拍。我也秀一下我 公共账号,欢迎各位亲们关注噢~!微...

随便推点

Android vold进程一 Vold启动和NetlinkManager数据获取_frank_zyp的博客-程序员秘密

一、vold简介: vold进程接收来自内核的外部设备消息,用于管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化等;当外部设备发生变化时,内核通过Netlink发送uEvent格式的消息给用户空间程序,Netlink 是一种基于异步通信机制,在内核与用户应用间进行双向数据传输的特殊 socket,用户态应用使用标准的socket API 就可以使用 netlin

微信小程序自定义状态栏_渔父歌的博客-程序员秘密

首先修改 app.json文件中的 windows字段如下:{ &quot;pages&quot;: [ &quot;pages/index/index&quot; ], &quot;window&quot;: { &quot;navigationStyle&quot;: &quot;custom&quot; }}为了避免遮挡用户手机顶部状态栏,还需要获取用户手机状态栏的高度,并在在...

(超详细)大数据技术之Hive的实战_hive实战_IT路上的军哥的博客-程序员秘密

数据仓库Hive的安装与使用JunLeon——go big or go home目录数据仓库Hive的安装与使用一、Hive的概述1、什么是Hive?2、Hive的应用场景3、Hive的特性4、Hive与传统数据仓库的区别二、Hive的架构与数据存储1、Hive的架构原理1) Hive架构2)HCatalog3)WebHCat2、Hive的数据存储模型1)Hive的分区和分桶2)Hive的托管表和外部表三、Hive的安装使用1、环.

ElementUI引入自定义图标_element please use class instead._ylnzzl的博客-程序员秘密

目录步骤说明新建项目添加图标项目设置文件引入使用技巧步骤说明新建项目在iconfont网站的”资源管理-&gt;我的项目“页面里新建项目,注意”FontClass/Symbol前缀“选项填写el-icon-,"Font Family选项"填写element-icons。添加图标搜索要用到的图标点击加入购物车【建议选择的图标名称是纯英文名】,图标添加完后,在购物车面板里选择“添加进项目”。项目设置在”资源管理-&gt;我的项目“页面里点击”项目设置“

构建移动版旅游网站页面(大专)_孙诗宇ya~的博客-程序员秘密

构建移动版旅游网站页面效果如下:代码形式:代码如下:html:&lt;!DOCTYPE html&gt;&lt;html lang="zh-cn"&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;title&gt;国内旅游&lt;/title&gt; &lt;!--链入对网页某类型元素的通用设置样式表--&gt; &lt;link href="css/common.css" rel="stylesheet" type

dup函数分析及应用场景_猪哥-嵌入式的博客-程序员秘密

dup应用场景分析Unix系统中支持不同的进程共享的打开文件,dup函数可以复制一个现有的文件描述符,这里的“复制”不是说dup返回完全一样的文件描述符,那是没有意义的。而是返回一个当前可用文件描述符中的最小数值,通过这一新的文件描述符也可以访问该文件。“共享”的分析上面提到了“共享”,对于刚接触文件描述符的人来说,可能会有些疑问,为什么要“共享”,将文件描述符作为一个“全局变量”访问不是很方便吗?有这种想法的,往往是因为我们大多数情况下的应用范围都是仅限于1个进程,即便1个进程下有多个线程,对于单进

推荐文章

热门文章

相关标签