![]() |
Wahrscheinlichkeit bestimmen
Moin,
folgendes Problem: Per Random erzeuge ich ganz normale Zahlen von 0-4. Wenn der Zufall eine 0-2 generiert hat man verloren, bei einer 3-4 hat man gewonnen. Klappt auch alles gut soweit. Jetzt wollte ich die Wahrscheinlichkeit das man gewinnt oder verliert etwas beeinflussen, sodass die Wahrscheinlichkeit das man gewinnt höher ist. Also dachte ich mir beeinflusse ich einfach den Random-Aufruf:
Delphi-Quellcode:
Zuerst hatte die Funktion Wahrscheinlichkeit einen Rückgabewert vom Typ Integer, hab ich dann x zum Beispiel den Wert 1 zugewiesen kam auch nur 0-2 heraus. Da ich aber möchte das 3-4 kommt muss ja x < 1 sein, also hab ich einen Rückgabewert vom Typ Single bestimmt. Beim Compilieren sagt mir nun Delphi "[Fehler] Unit2.pas(30): E2015 Operator ist auf diesen Operandentyp nicht anwendbar". Wo liegt mein Fehler, oder wie beeinflusst man die Wahrscheinlichkeit von Random ? Irgendwie steh ich mal wieder auf dem Schlauch...
function Wahrscheinlichkeit(x : Single) : Single;
begin result := Random(5 div x) end; procedure TForm2.Button1Click(Sender: TObject); begin edit2.Text := FloatToStr(Wahrscheinlichkeit(StrToFloat(edit1.Text))); end; Danke und schöne Feiertage noch, |
Re: Wahrscheinlichkeit bestimmen
Die Operatoren div und mod sind ausschließlich auf ganzzahlige Typen anwendbar und liefern auch immer ein ganzzahliges Ergebnis. Single ist aber nichtmal ordinal.
|
Re: Wahrscheinlichkeit bestimmen
Zitat:
|
Re: Wahrscheinlichkeit bestimmen
Hi,
mit /. :zwinker: MfG Marc |
Re: Wahrscheinlichkeit bestimmen
Zitat:
hatte ich als erstes probiert, dann bringt mir Delphi seltsamerweise den Fehler "[Fehler] Unit2.pas(30): E2250 Es gibt keine überladene Version von 'Random', die man mit diesen Argumenten aufrufen kann".... :? |
Re: Wahrscheinlichkeit bestimmen
Warum nicht einfach so:
Delphi-Quellcode:
prob:= real; aus [0;1] prob:= 0.6; if random > prob then showmessage('Ereigniss eingetreten'); |
Re: Wahrscheinlichkeit bestimmen
Delphi-Quellcode:
So wäre es zwar möglich, ist aber nicht unbedingt das was ich wollte. Ich möchte die per Random erzeugte Zahl direkt in ihrer Wahrscheinlichkeit beeinflussen, und das muss doch irgendwie möglich sein, oder ?
if random > prob then showmessage('Ereigniss eingetreten');
Trotzdem danke. ;) |
Re: Wahrscheinlichkeit bestimmen
Zitat:
Übrigens erhöhst du mit deiner Rechnung auch die Zahl der möglichen Ergebnisse, wenn du nur auf 3 oder 4 prüfst, gehen alle mit 5, 6 oder mehr verloren. Nikolas' Vorgehen ist das richtige, um eine beliebige Wahrscheinlichkeit zu erzeugen. Edit: Zitat:
|
Re: Wahrscheinlichkeit bestimmen
Zitat:
Also vielen Dank an alle. :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz