hotti: Zufallscode AB12 generieren und mit Regex Teilstrings finden

Beitrag lesen

Tach,

Thema 1 in Perl, eine Lösung, die selbst unter 500.000 Funktionsaufrufen keine Duplikate generiert:

Die kann allerdings sicher nicht die Anforderungen erfüllen; die Einschränkung zwei Großbuchstaben und zwei Ziffern erlaubt nichtmal 100000 verschiedene Kombinationen (84100 für 29 und 67600 für 26 Buchstaben).

Denkst wirklich, ich würde hier was posten, wenns nix taugt!?

Hier mein Test, test it:

  
#!/usr/bin/perl  
  
###########################################################################  
use strict;  
use Digest::MD5 qw(md5_hex);  
  
my %test;  
  
for(1..500000){  
 my $i = makeSid();  
 $test{$i}++;  
}  
  
# Duplikate in %test finden  
while( my ($k, $v) = each %test){  
 if($v > 1){ print "Key $k wurde mehrfach vegeben\n" }  
}  
  
  
exit; # EOS  
###########################################################################  
# otto macht haufenweise Duplikate  
sub otto{  
 my $x = int(rand(30));  
 return $x;  
}  
###########################################################################  
# makeSid macht keine Duplikate  
sub makeSid{  
 # Erzeugt eine kryptographisch starke zufaellige Session ID.  
 # Zurueckgegeben werden Hexadezimal-Zeichen  
  
 my @chars = ('A' .. 'Z', 'a' .. 'z', 0 .. 9, '+', '-');  
 my $len = scalar @chars;  
  
 my $id .= time();  
 $id .= $$;  
 for(my $i = 0; $i < $len; $i++){  
  $id .= $chars[int(rand($len))];  
 }  
 $id = substr($id, 0, $len);  
 $id = md5_hex($id);  
 return $id;  
}  

Schönen Tach noch,
Hotte

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.