[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] Perl怎样生成指定位数的随机字符串?

随机字符串要求:
1、字符串长度为8位
2、必须包含数字、小写字母、大写字母

本帖最后由 523066680 于 2011-6-6 00:41 编辑

这个嘛,先理论理论
随机的内容,当然是随机从元素中挑取了。
假设组合是A,B,C ,他们的元素要出现的个数也都是随机的
则一个组元素最多提取6个,因为有两个位让给其他两个
提取第一组以后,剩下的位置8-N ,其中0<N<7。
第二个组,随机提取填充,可用位置=8-N-1,因为至少留一个位给第三组。
第三个组,剩下位置都是你的了。

然后,是为了保证足够的随机,我忽略了一个问题……就是这些字符要随机穿插。


There is more than one way to do it.

不同的路线,不同的算法,可能会简单很多,如果有不繁琐的思路,就写写看

TOP

  1. use strict;
  2. use warnings;
  3. my $max = 8;
  4. my @array = (0..9,'a'..'z','A'..'Z');
  5. my $str = join '', map { $array[int rand @array] } 0..($max-1);
  6. print "$str\n";
复制代码
尚未完全满足第二个条件

TOP

返回列表