Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Jan 2011
Nee nee, ganz geklappt hatte dein ursprünglicher Code nicht.
Das Ergebnis ist um 0.01 (also die 1) zu groß. (außer bei 0)
Siehe das PS meiner letzten Antwort, wenn man es mal nachmist.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Jan 2011
Nicht böse gemeint.
Aber manchmal weniger denken und dafür nachsehn.
Random
Aber OK, 0 <= X < 1 könnte man schon mißverstehen, aber wenn man sieht, das das Eine Integer und das andere Double ist, dann könnte man eventuell auf die Idee kommen, daß es eher 0.0 <= X < 1.0, also 0.0 bis 0.9999... bedeutet.
Ach ja, probier es auch einfach mal aus?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Jan 2011
Das if chance = 0 und +1 in deinen Code kannst'e wegkürzen, wenn du statt <= einfach nur < verwendest.
function GetChance(Chance: Single): Boolean;
begin
Result := Random(100) < Trunc(Chance * 100); // oder doch besser Round
end;
PS: Random ohne Parameter gibt einen Wert im Bereich 0.0 <= x < 1.0 zurück, welches doch perfekt zu den Werten deines Chance paßt.
function GetChance(Chance:...