Mir ist bei dem Titel des Themas nix g'scheit's eingefallen, klingt bisschen kryptisch . Folgendes: ich möchte per Zufallszahl einen Parameter aus einer Liste von möglichen auswählen. Die einzelnen Parameter sollen aber durchschnittlich verschieden oft gewählt werden und es soll nicht hintereinander der gleiche Parameter gewählt werden. Besser verständlich? Ein Beispiel: bei meiner letzten Uhr gibt es verschiedene Satzbaumöglichkeiten um die Uhrzeit mitzuteilen, insgesamt 5 verschiedene. Es wird mit einer Zufallszahl einer daraus gewählt, Satzbau_1 bis Satzbau_3 sollen aber doppelt so oft gewählt werden, wie Satzbau_4 und Satzbau_5. Es soll aber nicht hintereinander der gleiche Satzbau gewählt werden. Das hab' ich so gelöst
Alles anzeigen
Es wird eine Zahl zwischen 0 und 7 gewürfelt und mit case eben ein Satzbau gewählt. case 5, 6 und 7 führen zum gleichen Satzbau wie 0, 1 und 2. Haben also doppelte Chance. Um jetzt eine Wiederwahl zu verhindern, ist mir nur so ein komischen Konstrukt wie diese do..loop-Schleife eingefallen, die bei einer Wiederwahl einfach noch mal würfeln lässt. Das muss doch schöner gehen, vor allem wenn die Häufigkeit deutlich unterschiedlicher sein soll. Das Beispiel oben wird alle Minute ausgeführt, in der Variablen 'Letzte_Wahl' ist also die Auswahl von vor einer Minute
BASCOM-Quellcode
- ...
- Do
- Satzauswahl = Rnd(8) 'hier wird gewürfelt, welche Satzauswahl als nächstes kommt, es soll von der vorherigen Wahl verschieden sein
- Loop Until Satzauswahl <> Letzte_wahl And Satzauswahl <> Letzte_wahl_1
- Letzte_wahl = Satzauswahl
- Letzte_wahl_1 = Letzte_wahl + 5
- ...
- Select Case Satzauswahl 'je nach Satzauswahl den Zeitsatz zusammenstellen
- Case 0 : Gosub Satzbau_1 'Satzbau 1..3 kommen häufiger dran
- Case 1 : Gosub Satzbau_2
- Case 2 : Gosub Satzbau_3
- Case 3 : Gosub Satzbau_4
- Case 4 : Gosub Satzbau_5
- Case 5 : Gosub Satzbau_1
- Case 6 : Gosub Satzbau_2
- Case 7 : Gosub Satzbau_3
- End Select
Raum für Notizen
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------