2010-07-21 51 views
0

我正在考慮在Perl這個隨機字符串發生器:此代碼生成多少個隨機字符串?

sub generate_random_string { 
    my $length = 12; 
    my @chars = qw/2 3 4 5 6 7 8 9 A B C D E F G H J K M N P Q R S T U V W X Y Z/; 
    my $str = ''; 
    $str .= $chars[int rand @chars] for 1..$length; 
    return $str; 
} 

多少唯一的字符串將在產生?如果我擴展字符串的長度,還有多少個獨特的字符串可用?

另外,如何計算兩次生成相同字符串的概率(假設字符串的長度保持爲12)?

+7

這是作業嗎?有點味道像功課。 – Joel 2010-07-21 19:59:51

+0

只是爲了好玩......這裏是另一種創建數組的方法:'my @chars = grep {/ [^ 10ILO] /} 0..9,'A'..'Z';' – toolic 2010-07-21 20:16:59

+0

這不是作業。這是爲了解決關於數學隨機是如何「隨機串生成」的內部討論。 – 2010-07-21 20:35:43

回答

3

答案是:(1/31)^ 12

或者更一般地:(1 /(字符數))^長度

+0

這就是1.2e-18或1.2可能的字符串。 – dwarring 2010-07-21 23:26:48