0

我想创建一个 0 到 9999 之间的 ping 号码,因为它将用于用户与其他用户交互。

我想过:

sub create
{
    $ping_num = rand( 1000 + int(9000) );
}

问题是它$ping_num应该是独一无二的。在这种情况下,create 方法被调用两次的概率很小$ping_number

关于如何制作唯一的随机 ping 号码的任何想法?

4

2 回答 2

4

这个模块可能有帮助:Data::UUID

它可以生成 UUID(通用唯一标识符),也称为 GUID(全局唯一标识符)。UUID 的长度为 128 位,并且保证与 3400 年前生成的所有其他 UUID/GUID 不同。

于 2013-08-09T06:25:38.800 回答
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";
于 2013-08-09T05:11:29.460 回答