excel 如何自动生成32位的大写字母跟数字组合的随机序列,类似于验证码的那种随机的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel 如何自动生成32位的大写字母跟数字组合的随机序列,类似于验证码的那种随机的相关的知识,希望对你有一定的参考价值。
RAND函数详解:返回大于等于 0 及小于 1 的均匀分布随机实数,每次计算工作表时都将返回一个新的随机实数。
语法
RAND( )
注解
一、若要生成 a 与 b 之间的随机实数,请使用:
RAND()*(b-a)+a
二、若要得到该数为单位1的周围的数。假设数在A1,则
=A1+(RAND()-RAND())*A1
比如0.6,就会求出 0.6±0.6范围的随即数
如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。
用excel生成字母大小写加数字的任意位数随机密码
考虑到部分网友可能急需这个公式,那么我先在这里把公式贴出来以供急用:
=CONCATENATE(IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))))
我们来分解这个函数,这个函数以CONCATENATE函数为主体包含了八个子部分:
IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97))))
而这个子部分又是由两个判断语句嵌套实现的,这个机制实现数字、大写字母、小写字母出现的概率相同
因为INT(RAND()*3)=0这个公式成功的概率只有1/3
而CHAR(INT(RAND()*10+48)) 则显示 [0-9]之间的数
而CHAR(INT(RAND()*25+65)) 则显示 [A-Z]之间的字母
而CHAR(INT(RAND()*25+97)) 则显示 [a-z]之间的字母追问
额。。。能不能去掉小写字母,这个是生成32位的吗?
追答上面是生成八位的,去掉小写字母的话就是下面这个:
=CONCATENATE(IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65)),IF(INT(RAND()*3)=0,CHAR(INT(RAND()*10+48)),CHAR(INT(RAND()*25+65))) 生成32位估计函数太长了,如果要实现的估计要用宏去实现了。下面朋友的答案MID("23456789ABCDEFGHZKLMNPQRSTUVWXYZ2",RAND()*32+1,1)也ok的。
c语言产生一个随机的验证码(4位的随机字母和数字的组合),要求用户输入,给出长度不符的输入错位提示
参考技术A #include <bits/stdc++.h>using namespace std;
char a[233],st[233];
int getnum(int num)
if (num<26) return('a'+num);else
return('0'+num-26);
int main()
srand(time(0));
for (int i=1;i<=4;i++) printf("%c",a[i]=getnum(rand()%36));printf("\\n");
scanf("%s",&st);
if (strlen(st)!=4) printf("WRONG LENGTH\\n");return(0);
for (int i=0;i<4;i++)
if (st[i]!=a[i+1])
printf("DIFFERS AT %d",i+1);
return(0);
printf("RIGHT\\n");
参考技术B 到底是要随机生成还是用户输入???
以上是关于excel 如何自动生成32位的大写字母跟数字组合的随机序列,类似于验证码的那种随机的的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种加密算法,把纯数字的加密成16位的密文,字母与数字组合的加密成32位的???