du antwortest einfach zu schnell xD
hier die verbesserte Version:
Code: Alles auswählen
Procedure.i YesNoPercent( Percentage.l )
Protected Result.i
If Percentage <= 0
Result = #False
ElseIf Percentage >= 100
Result = #True
Else
If Random(99) < Percentage
Result = #True
Else
Result = #False
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Yes = 0
No = 0
Perc = 64
For n=0 To 99999
If YesNoPercent(Perc)
Yes +1
Else
No +1
EndIf
Next
Debug "Ergebnis: "
Debug Str(Perc)+"% Soll-Wahrscheinlichkeit"
Debug Str(Yes)+" Yes, "+Str(No)+" No"
Debug StrF(Yes/1000,2)+"% Ist-Wahrscheinlichkeit"
mit Random(99) hast du recht, aber die Bedingung muss "<" heißen, nicht "<=".
der statistische Test belegt das.
PS:
ich hatte erst überlegt, eine Float als Argument zu akzeptieren und
mit 2 oder 3 Nachkommastellen zu arbeiten für die
Eingangs-Prozente,
aber das ist überflüssig, weil die tatsächliche Verteilung sowieso schwankt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.