2010-07-21 5 views
0

Je considère ce générateur de chaîne aléatoire en Perl:Combien de chaînes aléatoires ce code génère-t-il?

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; 
} 

Combien de chaînes uniques sera cette générer? Si je prolonge la longueur de la chaîne, combien de chaînes uniques sont disponibles?

En outre, comment puis-je calculer la probabilité de générer la même chaîne deux fois (en supposant que la longueur de la chaîne reste à 12)?

+7

Est-ce devoir? Kinda sent comme les devoirs. – Joel

+0

Juste pour le plaisir ... voici une autre façon de créer votre tableau: 'mes @chars = grep {/ [^ 10ILO] /} 0 .. 9, 'A' .. 'Z';' – toolic

+0

Ceci n'est pas un devoir . C'est pour régler une discussion interne sur la façon dont mathématiquement aléatoire est "génération de chaîne aléatoire". –

Répondre

3

La réponse est: (1/31)^12

Ou plus génériquement: (1/(nombre de caractères))^longueur

+0

Thats 1.2e-18 ou 1.2 quintillion de chaînes possibles. – dwarring

Questions connexes