Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

array mischen...

Diskussion: array mischen... im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige hi, Ich suche ne möglichst effiziente Funktion zum mischen von Arrays... Durch Google bin ich auf fisher_yates_shuffle gestoßen, eider ...

Antwort
Alt 15.05.07, 20:40   #1 (permalink)
 
Registriert seit: 06.01.07
keksinat0r Leistung: Facit NTK
Likes: 0
Standard array mischen...

Anzeige

hi,

Ich suche ne möglichst effiziente Funktion zum mischen von Arrays...
Durch Google bin ich auf fisher_yates_shuffle gestoßen, eider gibt mir diese funktion immer "0" zurück/aus...

Ich hab einen Array mit mehr oder weniger sortierten Elementen.
Diese möchte ich jetzt einfach so effizient wie möglich durchmischen...

keksinat0r ist offline   Mit Zitat antworten
Alt 15.05.07, 20:58   #2 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 442
Standard

Ich würde das über einen zufälligen Array-Index lösen. Etwa in der Art:

Code:
my $arraysize = @array1;

foreach(@array1) {
    $randval = rand($arraysize);
    $array2[$randval] = $_;
}
Muß natürlich noch eine Überprüfung rein, daß du kein Array-Element doppelt beschreibst.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 15.05.07, 21:12   #3 (permalink)
Themenstarter
 
Registriert seit: 06.01.07
keksinat0r Leistung: Facit NTK
Likes: 0
Standard

Dadurch gehen doch aber Einträge verloren.

Du lässt es ja nur "$arraysize"-mal durchlaufen.
Es ist aber nicht gesagt dass währen dieser Durchläufe alle Elemente von $array1 durch "rand($arraysize)" erfasst werden!?

(kann es grad net testen da meine VM irgendwie tot ist...)

[ EDIT: ] sorry denkfehler ^^
keksinat0r ist offline   Mit Zitat antworten
Alt 15.05.07, 21:15   #4 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 442
Standard

Deswegen sagte ich ja, daß du noch eine Überprüfung einbauen mußt, damit kein Element doppelt beschrieben wird. Dadurch dürfte dann eigentlich nichts verloren gehen.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 15.05.07, 22:20   #5 (permalink)
Träger des silbernen Seepferdchens
 
Benutzerbild von sieben
 
Registriert seit: 24.04.02
sieben Leistung: Z3
Likes: 9
Standard

Code:
#!/usr/bin/perl -wT
use strict;

sub fisher_yates_shuffle
{
	my $array = shift;
	my $i;
	for ($i = @$array; --$i;)
	{
		my $j = int rand($i+1);
		next if $i == $j;
		@$array[$i,$j] = @$array[$j,$i];
	}
}

my @array = qw(Eins Zwei Drei Vier Fuenf);
fisher_yates_shuffle(\@array);
print foreach (@array);
Das ist das fisher_yates_shuffle-Beispiel aus dem Perl Kochbuch. Funktioniert einwandfrei .
__________________
Diese Zeile ist reserviert für Clark Kent.
sieben ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » array mischen...
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php curl array string zu array parsen b4ck (Web-) Design und webbasierte Sprachen 5 12.12.07 17:11
zeichenreihe mischen c++ Halpha Code Kitchen 20 03.08.06 19:08
C int array[n] zu x int ??? NeoN Code Kitchen 11 25.04.04 20:38
Capture von MPEGS AVI'S & CO sowie mischen ? connect Music- & Filmbox 1 11.03.04 12:29
Ist verschlüsseln durch Mischen sicher? as3jg Cryptography & Encryption 21 15.12.03 21:30


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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61