Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Random Funktion -- Wahrscheinlichkeiten manipulieren


muzy - So 14.09.08 13:50
Titel: Random Funktion -- Wahrscheinlichkeiten manipulieren
Hallo,

ich brauch eine Random Funktion, die einigen Dingen eine Höhere Wahrscheinlichkeit zuordnet.

Das brauch ich für eine Verkehrssimulation die ich erstellen soll in der Schule.

Ich möchte dort bestimmte Fahrzeugtypen einbinden, jedoch wäre es unsinnig wenn spezielle Fahrzeuge (Krankenwagen usw) die gleiche Wahrscheinlichkeit haben wie normale Autos. Deswegen wollte ich fragen ob man da vlt irgendwie eine Möglichkeit hat, die Wahrscheinlichkeit zu ändern.

Sebastian aka muzy


Yogu - So 14.09.08 13:55

Du könntest Bereiche für die einzelnen Autotypen festlegen.

Ein Beispiel: Krankenwagen: 0-2; Polizeiauto: 3; LKW: 4-8; Normaler PKW: 8-19.

Dann lässt du dir eine zufällige Zahl zwischen 0 und 19 anzeigen (Random(20)), und prüfst in einer case-Abfrage, in welchem Bereich die Zahl liegt. Also:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Zahl := Random(19);

case Zahl of
  0..2:  { Krankenwagen };
  3:     { Polizeiauto };
  4..8:  { LKW };
  8..19{ Normaler PKW };
end;

Wenn du die Zahl per Random(100) generieren lässt, kannst du sogar mit Prozentzahlen arbeiten. :idea:


muzy - So 14.09.08 14:57

Vielen Dank,

kann man denn in die case sachen auch sowas wie begin und end einfügen ?


nagel - So 14.09.08 15:04

Ja.
Hättest du aber auch einfach ausprobieren können :D .


Jakob_Ullmann - So 14.09.08 15:47

Brauchst du aber afaik nicht, da der Code zwischen case: und dem nächsten case sowieso als Block betrachtet wird.


elundril - So 14.09.08 15:58

user profile iconJakob_Ullmann hat folgendes geschrieben:
Brauchst du aber afaik nicht, da der Code zwischen case: und dem nächsten case sowieso als Block betrachtet wird.


er meint bei den zahlen (2: ; 3: ; usw...) und bei denen braucht man, zumindest bei D7 doch noch ein Begin und ein end.


muzy - So 14.09.08 16:59

Also wäre dies hier:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
case Zahl of

1

begin
BLABLA
end;

2:

....


Möglich, oder nicht?


elundril - So 14.09.08 17:00

möglich und imho sogar notwendig!

lg elundril


muzy - So 14.09.08 17:01

super, dann habe ich das Prinzip jetzt verstanden und kann es umsetzen - super =)

Danke =)

Sebastian