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的。

参考技术A 考虑到验证码随机数列的可读性,一般应剔除0,1,o,i 这些难于识别的字符,这样使用mid()函数更有效。32位中每位使用函数MID("23456789ABCDEFGHZKLMNPQRSTUVWXYZ2",RAND()*32+1,1),然后用CONCATENATE(…………)32位即可。

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位的???

求excel随机生成3位和4位小写字母的方法,用啥函数呢?非常感谢!

在excel中怎样生成随机的4位字母数字组合,谢谢

excel怎样根据给定的字符生成一个8位的随机字符

[gcc &c语言] 随机生成8位的数字字母组合

excel中生成32位随机id