Deutsch
Quelltexte/ Codesnippets

Shuffle-Funktion / fortlaufende Zahlenreihen mischen

 

RudiB.
Hallo,

ich steh gerade voll auf dem Schlauch. Ich versuche eine fortlaufen Zahlenreihe in einem Array zufällig zu mischen. Hab da auch was probiert, bloß haut das nicht wirklich hin.
CLS
Declare zaehler%,x%[],y%,wert%[]

While 0=0

    wert%[0]=1
    wert%[1]=2
    wert%[2]=3' Zahlenreihe 1-5
    wert%[3]=4
    wert%[4]=5
    y%=0
    x%[0]=0
    x%[1]=0
    x%[2]=0'Array-Werte auf 0 setzen
    x%[3]=0
    x%[4]=0
    zaehler%=4

    Whileloop 0,4

        'Print &loop

        Whileloop 300

            randomize
            y%=RND(&loop)

            If (y%>=0) and (y%<=4)

                If x%[y%]=0

                    x%[y%]=wert%[zaehler%]'neue Wertzuweisung
                    Break

                EndIf

            Endif

        EndWhile

        dec zaehler%

    EndWhile

    whileloop 5

        print x%[&loop-1]

    EndWhile

    Print
    waitinput

Endwhile

waitinput

Es wird auf jeden Fall nicht gut gemischt.....Ich seh wohl den Wald vor lauter Bäumen nicht....Eine Shuffle-Funktion (willkürlich mischen gibst ja nicht in XProfan)...oder ???
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
21.04.2021  
 




RudiB.
Hat sich erledigt....hab was in der Baby-Box gefunden und funktioniert prima.
Dim% 10
CLS
window 0,0-480,320
Declare i%,zahl%,x%
inc x%

Whileloop 7' 7 Durchläufe zum testen / anschauen

    clearlist
    Print
    Print "Durchgang..";x%
    inc x%
    Shuffle

Endwhile

Waitinput

Proc Shuffle

    Let i%=1

    While i%<10'Liste füllen

        List% i%=i%
        Inc i%

    Wend

    Let i%=0
    Randomize

    While i%<9

        Let zahl%=List%(Rnd(10))

        If zahl%

            print zahl%,
            List% zahl%=0'Listenplatz ungültig machen
            Inc i%'

        EndIf

    EndWhile

EndProc

 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
21.04.2021  
 




RudiB.
Hab das ganze mal verfeinert und eine Shuffle.inc gebastelt.
Hiermit können fortlaufende Zahlenreihen zufällig gemischt werden.
Außerdem kann ein Startpunkt und eine Schrittweite eingestellt werden.

Aufruf:
shuffle 15,5,Test_Array%[],2,5

1.Parameter = Anzahl der Zahlenelemente im Array
2.Parameter = Anzahl der Elemente die Zufällig aus dieser Zahlenreihe ausgegeben werden.
3. Parameter ein leeres dynamisches INT-Array
4. Parameter = Startpunkt der Zahlenelemente z.B. 0 (0-1-2-3....)
5. Parameter = Schrittweite in der Zahlenelementreihe z.B. 5 (0-5-10-15...)

hier ein paar Code-Zeilen zum testen der INC
 $I Shuffle.inc
CLS
window 100,200 -800,400
Declare Test_Array%[],anzahl_elemente%,ausgabe_elemente%,Start_bereich%,Schrittweite%
' ein Beispiel für Lottozahlen
anzahl_elemente%=49'49 Zahlen-Elemente
ausgabe_elemente%=6'6 Zahlen aus Zahlenfolge werden gemischt ausgegeben.
start_bereich%=1'Startbereich = 1
Schrittweite%=1'Schrittweite = 1
shuffle anzahl_elemente%,ausgabe_elemente%,Test_Array%[],start_bereich%,Schrittweite%
Print "z.B: Lottozahlen 6 aus 49"
Ausgabe
Print
' ein Beispiel für eine komplette Zahlenreihe die gemischt wird.
anzahl_elemente%=20'20 Zahlen-Elemente
ausgabe_elemente%=20'20 Zahlen aus Zahlenfolge werden gemischt ausgegeben.
start_bereich%=0'Startbereich = 0
Schrittweite%=1'Schrittweite = 1
shuffle anzahl_elemente%,ausgabe_elemente%,Test_Array%[],start_bereich%,Schrittweite%
Print "Ein Beispiel für eine komplette Zahlenreihe die gemischt wird, mit dem Startpunkt 0"
Ausgabe
Print
' 15 Zahlen-Elemente, 5 Zahlen werden gemischt ausgegeben, Startpunkt = 2, Schrittweite = 5
shuffle 15,5,Test_Array%[],2,5
Print "15 Zahlen-Elemente, 5 Zahlen werden gemischt ausgegeben, Startpunkt = 2, Schrittweite = 5"
Ausgabe
Print
' 15 Zahlen-Elemente, 8 Zahlen werden gemischt ausgegeben, Startpunkt = 0, Schrittweite = 2
shuffle 30,8,Test_Array%[],0,2
Print "30 Zahlen-Elemente, 8 Zahlen werden gemischt ausgegeben, Startpunkt = 0, Schrittweite = 2"
Ausgabe
waitinput
End

Proc Ausgabe

    whileloop SizeOf(Test_Array%[])

        Print Test_Array%[&loop-1],

    EndWhile

    Print
    ArrDel Test_Array%[],0,SizeOf(Test_Array%[])-1'Arraygrösse wird auf 1 gesetzt.

EndProc


Es können auch negative Werte für Startpunkt und Schrittweite gewählt werden.

1 kB
Hochgeladen:22.04.2021
Ladeanzahl50
Herunterladen
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
22.04.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.333 Betrachtungen

Unbenanntvor 0 min.
Gast.081503.10.2024
Walter15.01.2023
RudiB.02.09.2022
N.Art21.07.2022
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

RudiB. (3x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie