加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Rand()在perl中不是那么随意

发布时间:2020-12-15 21:51:25 所属栏目:大数据 来源:网络整理
导读:我有一个Perl脚本,它给了我一个50个字符的随机数字,字母和一些特殊字符串.我正在数据库中输入它们.现在,考虑到字符串的长度和字符数量,我不认为可以轻松创建重复项. 这是创建字符串的漂亮代码块: my $random_id='';my @c = ( "A" .. "Z","a" .. "z",0 .. 9,
我有一个Perl脚本,它给了我一个50个字符的随机数字,字母和一些特殊字符串.我正在数据库中输入它们.现在,考虑到字符串的长度和字符数量,我不认为可以轻松创建重复项.

这是创建字符串的漂亮代码块:

my $random_id='';
my @c = ( "A" .. "Z","a" .. "z",0 .. 9,qw(! @ $% ^ & *) );
$random_id = join '',map $c[rand @c],1 .. 50;

它产生如下字符串:

C1Qt8L7E7QUD%lkxnh9yjZ2njF0iMj!1o^4DmTbVNhQB9%dke@

问题是它会在唯一的字符串中复制一次精确的字符串,而在某些字符串上复制一次.这是20个字符串.这很奇怪.我可以解决它并找到解决方案……但这让我感到困惑.想知道为什么.有人有想法吗?

解决方法

您需要使用srand为随机数生成器播种,否则它将生成相同的数字序列.

http://perldoc.perl.org/functions/srand.html

编辑:

根据url url的文档,如果perl版本在5.004之前,那么它将不会自动调用该函数.因此,请检查您正在运行的perl版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读