我想创建一个 0 到 9999 之间的 ping 号码,因为它将用于用户与其他用户交互。
我想过:
sub create
{
$ping_num = rand( 1000 + int(9000) );
}
问题是它$ping_num
应该是独一无二的。在这种情况下,create 方法被调用两次的概率很小$ping_number
。
关于如何制作唯一的随机 ping 号码的任何想法?
我想创建一个 0 到 9999 之间的 ping 号码,因为它将用于用户与其他用户交互。
我想过:
sub create
{
$ping_num = rand( 1000 + int(9000) );
}
问题是它$ping_num
应该是独一无二的。在这种情况下,create 方法被调用两次的概率很小$ping_number
。
关于如何制作唯一的随机 ping 号码的任何想法?
这个模块可能有帮助:Data::UUID
它可以生成 UUID(通用唯一标识符),也称为 GUID(全局唯一标识符)。UUID 的长度为 128 位,并且保证与 3400 年前生成的所有其他 UUID/GUID 不同。
试试这个例子。
#!/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";