我想在0到9999之间创建一个ping号,因为它将用于用户与其他用户进行交互。
我想到了:
sub create
{
$ping_num = rand( 1000 + int(9000) );
}
问题是$ping_num
应该是唯一的。在这种情况下,当两次调用create方法时,$ping_number
的概率很小。
有关如何制作唯一随机ping号的任何想法?
答案 0 :(得分:4)
此模块可能有用:Data::UUID
它可以生成UUID(通用唯一标识符),也称为GUID(全局唯一标识符)。 UUID长度为128位,保证与3400年前生成的所有其他UUID / GUID不同。
答案 1 :(得分:0)
试试这个例子。
#!/usr/bin/perl
use strict;
use warnings;
my @random_array = ();
my $random_counter = 0;
sub random_create
{
my $r;
# 0 - 9999; 10000 possible values
my $MAX = 10000;
# Reset if maximum is reached.
# You could instead return -1 to tell the caller that maximum number of
# random values were already generated and create another function like
# random_reset() with same methods below.
if ($random_counter == $MAX) {
@random_array = ();
$random_counter = 0;
}
# Generate the number.
until (!undef($random_array[$r = int(rand($MAX))])) { }
# Record the number.
$random_array[$r] = 1;
$random_counter++;
# Return.
return $r;
}
print random_create()."\n";