Ergebnis 1 bis 9 von 9

Thema: zufallszuordnung ohne wiederholung

  1. #1
    Azubi(ne)
    Registriert seit
    30.11.2008
    Beiträge
    50
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard zufallszuordnung ohne wiederholung

    Ich habe 81 Variabeln und möchte denen jeweils einen Wert zuordnen. Und zwar habe ich eigentlich ein 9 x 9 Gitter mit einer Variable pro Feld. Inhalt des ersten Feldes ist dann $aa (=${$alphabet[0].$alphabet[0]}), das nächste Feld in dieser Zeile $ab (=${$alphabet[0].$alphabet[1]}), sprich die erste Variable in der Variabe beschreibt die Zeile und die zweite Variable in der Variable beschreibt die Spalte. $aa bedeutet demnach also erste Spalte, erste Zeile.
    Den Inhalt eines Feldes generiere ich mit einer Zufallszahl von 1-9. Ziel ist es dass in einer Zeile eine bestimmte Zahl nur einmal vorkommt, also wie beim Sudoku ($aa darf nicht gleich $aj sein).

    Habe bisher folgenden Code und komme irgendwie einfach nicht mehr weiter, alles Probieren hat nichts genützt.

    PHP-Code:
    // Variablennamen aa bis jj
        // 9 x 9 Gitter
        // Zeilennummer k 
        // Spaltennummer l
        
        
    $alphabet = array(a,b,c,d,e,f,g,h,j);
        
        for(
    $k 0$k <= 8$k++){
            for(
    $l 0$l <= 8$l++){
                
    // Wert wird Variable zugewiesen
                
    ${$alphabet[$k].$alphabet[$l]} = rand(1,9);
                for(
    $m 0$m <= $l$m++){
                    
    // Wenn neuer wert aus Zeile k gleich ist wie ein vorheriger Wert aus Zeile k
                    // ordne der Variable einen neuen Wert zu
                    
    if(${$alphabet[$k].$alphabet[$l]} == ${($k).$m}){
                        ${
    $alphabet[$k].$alphabet[$l]} = rand(1,9);
                    }else{
                        break;
                    }
                }
            }
        } 
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    wieso benutzt du dafür keine Arrays?
    Gruß crAzywuLf

  3. #3
    Azubi(ne)
    Themenstarter

    Registriert seit
    30.11.2008
    Beiträge
    50
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    Weil ich zu kompliziert denke

  4. #4
    Forum Guru Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: zufallszuordnung ohne wiederholung

    Zitat Zitat von kyr Beitrag anzeigen
    Weil ich zu kompliziert denke
    dann lass dat doch
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  5. #5
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    Hier mal ein Ansatz von mir
    PHP-Code:
    <?php
    // Alphabet
    $alphabet = array(abcdefghj);

    // Dein Array
    $table = array();
    for (
    $zeile 0$zeile 9$zeile++)
    {
        
    // Zeile anlegen
        
    $table[$zeile] = array();
        for (
    $spalte 0$spalte 9$spalte++)
        {
            
    // Neue Zahl
            
    $neue_zahl rand(19);
            
    // Solange es die Zahl in der Zeile gibt, generiere eine neue!
            
    while (in_array($neue_zahl$table[$zeile])) { $neue_zahl rand(19); }
            
    // Zahl bzw. Spalte hinzufügen
            
    $table[$zeile][] = $neue_zahl;
        }
    }

    print 
    '<pre>';
    print_r($table);
    print 
    '</pre>';

    ?>
    EDIT und falls du ein Sudoku machen möchtest müsstest du auch noch überprüfen ob der Wert in der Spalte vorkommt, z.B. so:
    PHP-Code:
    <?php
    // Dein Array
    $table = array();

    // Prüft ob ein Wert in einer Spalte vorkommt
    function in_spalte($wert$spalte)
    {
        for (
    $zeile 0$zeile 9$zeile++)
        {
            if (
    $table[$zeile][$spalte] == $wert)
            {
                return 
    1;
                break;
            }
        }
        return 
    0;
    }

    for (
    $zeile 0$zeile 9$zeile++)
    {
        
    // Zeile anlegen
        
    $table[$zeile] = array();
        for (
    $spalte 0$spalte 9$spalte++)
        {
            
    // Neue Zahl
            
    $neue_zahl rand(19);
            
    // Solange es die Zahl in der Zeile oder Spalte gibt, generiere eine neue!
            
    while (in_array($neue_zahl$table[$zeile]) || in_spalte($neue_zahl$spalte)) { $neue_zahl rand(19); }
            
    // Zahl bzw. Spalte hinzufügen
            
    $table[$zeile][] = $neue_zahl;
        }
    }

    ?>
    was ein spaß^^
    Geändert von crAzywuLf (17.03.2010 um 18:21 Uhr)
    Gruß crAzywuLf

  6. #6
    Forum Guru
    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    @cr@zywulf
    das war fies, der merkt doch nicht das deine funktion "in_spalte" nicht funktioniert
    und wieso ein break nach dem return? Das nach dem return wird nie ausgeführt...
    Facebook Gruppe: Böses Encoding

  7. #7
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: zufallszuordnung ohne wiederholung

    Die Funktion benötigt aber auch $table
    Und ich würde da schon isset() reinbauen. Du kannst die Notices die da en masse geschmissen werden zwar ausstellen, aber sauberes Programmieren ist das nicht.
    PHP-Code:
    // Prüft ob ein Wert in einer Spalte vorkommt
    function in_spalte($wert$spalte$table$zeile_aktuell=9)
    {
        for (
    $zeile 0$zeile $zeile_aktuell$zeile++)
        {
            if (isset(
    $table[$zeile][$spalte]) && $table[$zeile][$spalte] == $wert)
            {
                return 
    1;
            }
        }
        return 
    0;

    Im Aufruf der Funktion dann natürlich noch $table ergänzen und optional, aber empfohlen, $zeile_aktuell. Alle Zeilen danach brauchen nicht mehr geprüft zu werden, die sind ja noch nicht belegt. Und die Funktion wird damit auch für mehr als 9 Zeilen nutzbar.


    @RMB klar wird das aufgerufen, wenn der Wert nicht gefunden wird
    Das ist ja der Sinn der Funktion...
    Edit: Blödsinn, natürlich nicht, war grad verpeilt, hast Recht mit dem break ^^
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  8. #8
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    Zitat Zitat von ::RMB:: Beitrag anzeigen
    @cr@zywulf
    das war fies, der merkt doch nicht das deine funktion "in_spalte" nicht funktioniert
    und wieso ein break nach dem return? Das nach dem return wird nie ausgeführt...
    klar hast ja recht^^ hatte nur ne minute dafür zeit ^^ wollte feierabend machen isset und global fehlen ja auch^^

    edit: ich werd das morgen auf der arbeit nochmal überdenken^^ das könnte theoretisch ewig dauern, das ist so viel zu unperformant
    Geändert von crAzywuLf (17.03.2010 um 21:20 Uhr)
    Gruß crAzywuLf

  9. #9
    Azubi(ne)
    Themenstarter

    Registriert seit
    30.11.2008
    Beiträge
    50
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: zufallszuordnung ohne wiederholung

    Vielen Dank für die Anregungen! Werde das Ganze bei Gelegenheit in mein Script einfügen.

Ähnliche Themen

  1. MP3-Software mit Sequenz-Wiederholung?
    Von pinales im Forum Computer - Internet Forum
    Antworten: 4
    Letzter Beitrag: 08.06.2009, 16:27
  2. Teamspeak Ohne Werbung? Ohne Anforderung
    Von Raykonboss im Forum Sponsor gesucht !
    Antworten: 0
    Letzter Beitrag: 19.01.2008, 18:39
  3. CMS ohne sql
    Von kensworld im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 14.02.2006, 15:21
  4. Tabellen wiederholung
    Von Kingdingeling im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 10
    Letzter Beitrag: 08.09.2005, 19:59
  5. Ohne Worte
    Von [sG|W00tkaeppi] im Forum Das Forum für Spiele, Fun & Jokes
    Antworten: 6
    Letzter Beitrag: 02.07.2005, 15:48

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •