Italia
Fonte/ Codesnippets

Shuffle-Funktion / fortlaufende Zahlenreihen mischen

 

RudiB.
Ciao,

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 per 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 per 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 per 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 per Startpunkt und Schrittweite gewählt werden.

1 kB
Hochgeladen:22.04.2021
Downloadcounter50
Download
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
22.04.2021  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.357 Views

Untitledvor 0 min.
Gast.081503.10.2024
Walter15.01.2023
RudiB.02.09.2022
N.Art21.07.2022
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

RudiB. (3x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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