Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Zufallsziehung ohne Zurücklegen

Uploader:AdministratorSebastian
Datum/Zeit:10.09.2012 16:34:38

#define AnzahlZahlen 31

Dim ZahlenInDerUrne(1 To AnzahlZahlen) As Integer
' "Urne" mit Zahlen fuellen...
For i As Integer = 1 To AnzahlZahlen
    ZahlenInDerUrne(i) = i * 10
Next i

' Array fuer Markierungen, welche Indizes schon gezogen waren
Dim SchonGezogen(1 To AnzahlZahlen) As UByte

' Array fuer die gezogenen Zahlen in zufaelliger Reihenfolge
Dim Ziehung(1 To AnzahlZahlen) As Integer

' Pseudozufallszahlengenerator initialisieren
Randomize Timer

Dim indexGezogen As Integer

' Ziehung!
For z As Integer = 1 To AnzahlZahlen
    ' Jetzt so lange ziehen, bis eine Zahl gezogen wird,
    ' die noch nicht als "schon gezogen" markiert ist:
    Do
        indexGezogen = INT(RND*AnzahlZahlen)+1
    Loop Until SchonGezogen(indexGezogen) = 0
    ' Bisher noch nicht gezogene Zahl gefunden.
    ' Diese *jetzt* als gezogen markieren:
    SchonGezogen(indexGezogen) = 1
    ' Gezogene Zahl ins Ergebnis-Array uebertragen:
    Ziehung(z) = ZahlenInDerUrne(indexGezogen)
Next z

Print "Hier das Ziehungsergebnis ohne Zuruecklegen:"

' Ausgabe des Ergebnis-Arrays
For i As Integer = LBound(Ziehung) To UBound(Ziehung)
    Print Ziehung(i);
    'Je nachdem, ob es die letzte Zahl ist oder nicht, auch noch
    'ein Komma dahinter ausgeben.
    If (i < UBound(Ziehung)) Then
        Print ", ";
    Else
        Print ""
    End If
Next i

Sleep