Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10107[/thread]

SID zufall



<< >> 6 Einträge, 1 Seite
styx-cc
 2007-08-16 20:58
#98285 #98285
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hallo, wollte nur mal fragen, ob das hier zufaellig genug ist (eine Zufaellige SID soll erstellt werden), oder ob ihr da einen besseren Vorschlag habt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub create_sid {
my $sid;
#create a random SID
$sid = rand(20)*rand(20);
#my $time = time();
$sid .= time/(int(rand(10)+1));
#print "$sid";
$sid = md5_hex($sid);
return $sid;
}


MfG
Pörl.
#Kein Kommentar
 2007-08-16 21:17
#98289 #98289
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
meistens hilft noch ein
Code: (dl )
srand;
am anfang des codes, damit "bessere" Zufallszahlen erzeugt werden.
sie ist dann aber immernoch pseudozufällig (obwohl ich garnicht weiß, ob
der computer überhaupt "echte" zufallszahlen erzeugen kann)
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
#Kein Kommentar
 2007-08-16 21:23
#98290 #98290
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
zu

Code: (dl )
$sid .= time/(int(rand(10)+1));


ich glaube das zufallszahlen sowieso mit hilfe der zeitfunktion des
computers errechnet werden.
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
sid burn
 2007-08-16 21:31
#98293 #98293
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
@kein kommentar
Perl selber initialisiert den seed schon sehr gut zufällig. Das brauch man nicht mehr ändern. Wahrscheinlich macht man es nur noch schlechter. ;)

Und im falle einer Subroutine könnte ein srand() dort tötlich sein. Je nachdem wie man es initialisiert und die funktion oft/schnell hintereinander aufgerufen wird, kann es sein das jeder aufruf die selbe srand bekommt und dann immer die selben Zahlen heraus kommen.

Aber ich würde es deswegen ganz einfach machen. Ein Array von gültigen Zahlen und dort z.B. 16 mal eine Zufällige zahl heraus fischen.

Und nein, Zufallszahlen werden nur durch eine Matematische Funktion berechnet. Echte Zufallszahlen gibt es also nicht. wenn du srand() auf immer den gleichen wert stellst, bekommst auch immer die selben ergebnisse.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
GwenDragon
 2007-08-16 21:48
#98295 #98295
User since
2005-01-17
14565 Artikel
Admin1
[Homepage]
user image
styx-cc+2007-08-16 18:58:45--
Hallo, wollte nur mal fragen, ob das hier zufaellig genug ist (eine Zufaellige SID soll erstellt werden)

Bei sowas muss du wirklich testen!
Also meinetwegen 1000 sids erzeugen und eine Pipe nach uniq und dann schauen, ob welche doppelt sind.
Oder eben in Perl die Doppelungen suchen ;)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

styx-cc
 2007-08-17 03:34
#98301 #98301
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hab das mal getestet, scheint rel. zufaellig zu sein.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl -w
use strict;
use Digest::MD5 qw/md5_hex/;

my @sessions;
push(@sessions, 'xyz') for (0..1);
for (0..999999) {
push(@sessions, create_sid());
}

my %double;
for my $key (@sessions) {
$double{$key}++;
}

for my $key (keys %double) {
print "$key: $double{$key}\n" if ($double{$key}>1) ;
}

sub create_sid {
my $sid;
#create a random SID
$sid = rand(20)*rand(20);
#my $time = time();
$sid .= time/(int(rand(10)+1));
#print "$sid";
$sid = md5_hex($sid);
return $sid;
}


MfG
Pörl.
<< >> 6 Einträge, 1 Seite



View all threads created 2007-08-16 20:58.