我想要生成的字符串种类的更多示例:
28DA9782 55C7128A
解决方法
#!/usr/bin/env perl use strict; use warnings; for (1 .. 10) { printf "%08X\n",rand(0xffffffff); }
但是,您可能会发现 – 至少在某些系统上有一些perls(如果不是全部) – range of rand
is restricted to 32,768 values.
您还可以学习String::Random的源代码,以了解如何生成满足其他条件的随机字符串.
但是,我不建议在Windows系统上使用内置兰特.有关高质量RNG,请参阅Math::Random::MT.
#!/usr/bin/env perl use strict; use warnings; my @set = ('0' ..'9','A' .. 'F'); my $str = join '' => map $set[rand @set],1 .. 8; print "$str\n";
PS:The issue with Perl’s rand on Windows was fixed in 5.20:
This meant that the quality of perl’s random numbers would vary from platform to platform,from the 15 bits of rand() on Windows to 48-bits on POSIX platforms such as Linux with drand48().
Perl Now uses its own internal drand48() implementation on all platforms. This does not make perl’s rand cryptographically secure. [perl #115928]
原文地址:https://www.jb51.cc/Perl/172144.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。