eins vorweg: es geht hier jetzt nicht um einen besonders ausgefuchsten Code oder sowas, aber ich bin durch mein derzeitiges Projekt auf eine kleine Idee gekommen, und damit nicht jeder selbst draufkommen muß stelle ich sie hier direkt vor

Wenn man für irgendwelche zufälligen Dinge Entscheidungen treffen muß, dann macht man oft erstmal solche Konstrukte:
Code: Alles auswählen
If Random(1)
; mach dies
Else
; mach das
EndIf
Code: Alles auswählen
If Random(5) > 2
; mach dies
Else
; mach das
EndIf
Die - zugegeben sehr einfache, aber dafür auch genauso effektive - Lösung für diese Sache ist eine kleine, handliche Procedure zu schreiben, die man am besten in seine Standard-Include irgendwo einbaut:
Code: Alles auswählen
Procedure decide(probability)
If probability > 0 And Random(100) <= probability
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Code: Alles auswählen
If decide(30)
; mach dies
Else
If decide(25)
; mach das
Else
; mach jenes
EndIf
EndIf
If decide(60)
; mach noch das
Else
; oder halt das
EndIf
...im Gegensatz zu solch einem Durcheinander wie hier:
Code: Alles auswählen
If decide(9) < 3
; mach dies
Else
If Not decide(3)
; mach das
Else
; mach jenes
EndIf
EndIf
If decide(4) < 3
; mach noch das
Else
; oder halt das
EndIf
