QuoteRufen Sie niemals srand() auf, wenn Sie nicht genau wissen, was Sie tun. Perl ruft srand() automatisch für Sie mit einem geeignetem Seed auf, sobald rand() verwendet wird.
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 30 31 32 33
#!/usr/bin/perl # Prog mischen.pl use strict; use warnings; my @alteliste = (); my @neueliste = (); my %bereits_gezogen = (); my $gezogen; # alte Datei einlesen open(UNGEMISCHTEDATEI,"<ungemischte_liste") || die "kann ungemischte Datei nicht zum Einlesen öffnen : $!"; while (my $zeile = <UNGEMISCHTEDATEI>) { push (@alteliste,$zeile); } close (UNGEMISCHTEDATEI); # ziehen ohne Zurücklegen for ( 1 .. $#alteliste ) { $gezogen = int (rand($#alteliste)); redo if exists $bereits_gezogen{$gezogen}; push (@neueliste, $alteliste[$gezogen]); $bereits_gezogen{$gezogen}++; } # neue Datei schreiben open(GEMISCHTEDATEI,">gemischte_liste") || die "kann gemischte Datei nicht zum Schreiben öffnen : $!"; foreach (@neueliste) { print GEMISCHTEDATEI ("$_"); } close (GEMISCHTEDATEI);
1
2
3
4
5
6
for (index = items ; index > 1 ; ) {
int swap = (int)(Drand01() * (double)(index--));
SV *tmp = ST(swap);
ST(swap) = ST(index);
ST(index) = tmp;
}
1
2
geeqie-1.0/src/slideshow.c: guint p = (double)rand() / ((double)RAND_MAX + 1.0) * array->len;
geeqie-1.0/src/collect.c: random = (guint) (1.0 * length * rand()/(RAND_MAX + 1.0));