怎样利用Excel随机函数rand()生成随机密码
办公软件Excel中有个随机函数rand(),就可以生成随机密码,经测试生成六位数数字密码即100000-999999都是有效的。
网上到处都有随机密码生成器,只要下载下来就可以生成随机密码,但是通常此类软件有使用限制,一般只能生成10个密码。对于有特殊需求的,如果需要随机生成几百个随机密码,这个方法的局限性是显而易见的,我们必须寻求其他方法。
其实,我们经常用的'办公软件Excel中有个随机函数rand(),就可以生成随机密码,经测试生成六位数数字密码即100000-999999都是有效的。
在单元格中输入=INT(RAND()*900000+100000)(如图B列)
解释:rand()是产生一个0-1之间的数,*900000+100000是把它扩大变成6位数,int()是取整,把它后面产生的小数去掉。
延伸:rand()函数也可以产生随机字母
在单元格中输入=CHAR(INT(RAND()*26+97))可以生成一个随机小写字母;=CHAR(INT(RAND()*26+65))生成一个随机大写字母。
如果要生成一个字母和数字组成的随机密码,可以将以上方法结合使用。
例如要生成一个第一位和第四位是字母,其它是数字的六位密码:
=(CHAR(INT(RAND()*26+97))INT(RAND()*90+10) CHAR(INT(RAND()*26+97)) INT(RAND()*90+10))(如图C列)
excel怎么合并单元格的方法
今天有网友在QQ上问了笔者一个excel合并单元格的问题,找不到怎么合并了。下面针对这个问题,笔者今天就把“excel怎么合并单元格”的方法和步骤详细的说下,希望对那些刚用excel软件还不太熟悉的朋友有所帮助。 ;
先用字典生成器,生成字典。然后用穷举法穷举。如果是纯数字的密码,很快。
补充:穷举法,就是 列出所有可能出现的单位。6位密码,如果是纯数字,就从000000,000001,000002到999999都试一遍。
C语言实现密码生成器,参考代码如下:
#include
#include
#include
//const char lower_chars[] = "abcdefghijklmnopqrstuvwxyz";
//const char upper_chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//const char number_chars[] = "0123456789";
const char lower_chars[] = "abcdefghijkmnpqrstuvwxyz"; // no l or o
const char upper_chars[] = "ABCDEFGHJKLMNPQRSTUVWXYZ"; // no I or O
const char number_chars[] = "23456789"; // no 1 or 0
const char special_chars[] = "!@#$%^*()-=_+[]{};:'\",.?/";
const int _ks_pass_len = 17;
void mkpass(char pass[_ks_pass_len+1])
{
int i = 0, j = 0, k = 0,n = 0;
n = _ks_pass_len/4;
for (; i n; i++)
{
pass[i] = lower_chars[rand()%(strlen(lower_chars))];
pass[i+n] = upper_chars[rand()%(strlen(upper_chars))];
pass[i+2*n] = number_chars[rand()%(strlen(number_chars))];
pass[i+3*n] = special_chars[rand()%(strlen(special_chars))];
}
j = _ks_pass_len - 4*n;
for (i = 0; ij; i#43;#43;) {
pass[i+4*n] = special_chars[rand()%(strlen(special_chars))];
}
//字符乱序
for (i = 0; i 32; i++)
{
j = rand()%(_ks_pass_len);
k = pass[j];
pass[j] = pass[i%_ks_pass_len];
pass[i%_ks_pass_len] = k;
}
pass[_ks_pass_len] = '\0';
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
char szPass[_ks_pass_len+1];
for (int i=0; i16; i++)
{
mkpass(szPass);
printf("%s\n",szPass);
}
return 0;
}j; i#43;#43;)