Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Frage nach Zufallzahl ? Mit Quelcode.-----


aancall - Do 04.11.10 20:49
Titel: Frage nach Zufallzahl ? Mit Quelcode.-----
Bei der zufälligen Verteilung von Aktionspunkte, wird die Prozedur Jahr für Jahr
immer dieselbe Verteilung ausgeführt.
Frage: wie lässt sich die Verteilung jedes Mal(Jahr) anderes umsetzen, obwohl gleiche Aktionspunkte aufgeteilt werden.
Haben Sie ein Idee , wie soll ich mein Programm verändern ?

Delphi-Quelltext:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
var
i1,i2,i3,i4,i5,i6,i7,i8,i9:Integer;
i11,i22,i33,i44,i55:Integer;
i,p:integer;    // i fuer jahr
begin
p:=8;// Aktionspunkt
for i:=1 to 10 do
  begin
randomize;//Zufallgenerator auf Startwert setzen(Initialisieren)
i11:=random(p);//Zufallszahl von 0..p
i1:=i1 +i11;
i22:=random(p-i11);//Zufallszahl von 0..p-i11
 i2:=i2 + i22;
i33:=random(p-i11-i22);//Zufallszahl von 0..p-i11-i22
i3:=i3+i33;
i44:=random(p-i11-i22-i33);//Zufallszahl von 0..p-i11-i22-i33
i4:=i4 +i44;
i55:=random(p-i11-i22-i33-i44);//Zufallszahl von 0..p-i11-i22-i33-i44
i5:=i5+i55;
writeln(i11,' ',i22,' ',i33,' ',i44,' ',i55);
end;
readln
end.


Martok - Do 04.11.10 21:00

Hallo und :welcome: im Delphi-Forum!

Zuerst mal: es ist in Foren üblich dass man sich duzt...
Ich möchte dich bitten, für Quellcode die entsprechenden [delphi]-Tags zu verwenden, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:

Quelltext
1:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAG922d5ce7f1f4785135d2ccc6afd517a5}</span></span>                    

Wird:

Delphi-Quelltext
1:
var Test: integer;                    


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und ändern. Danke Dir!

Zur Frage: der Aufruf von Randomize in JEDEM Durchlauf ist so gar nicht gut. Verschieb diese Zeile am Besten vor die Schleife. Mehr seh ich bei diesen... schönen Variablennamen erstmal nicht.

Viele Grüße,
Martok


Bergmann89 - Fr 05.11.10 14:42

Hey,

was mir in deinem Code auffällt: du hast i1 bis i5 nicht initialisiert, das heißt es können irgendwelche Werte drin stehen und das verfälscht die natürlich die Berechnungnen.
Wenn du die Zufallsverteilung ändern willst musst du dir eine eigene Funktion schreiben, die die Verteilung so anpasst, wie du das willst. Und dann erstetzt du einfach die normale Random Methode durch deine eigene.

MfG Bergmann.


buster - Fr 05.11.10 15:39

gugge mal hier [http://www.delphi-forum.de/viewtopic.php?t=35550&start=0] ;)


Bergmann89 - Fr 05.11.10 15:48

Hey,

in dem Thread geht es ausschließlich um randomize, ich wüsste nicht wie ihm das weiter helfen sollte :?!?:

MfG Bergmann


Teekeks - Fr 05.11.10 15:52

Insgesamt randomize nur ein einziges mal aufrufen.


buster - Fr 05.11.10 16:03

user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Hey,
in dem Thread geht es ausschließlich um randomize, ich wüsste nicht wie ihm das weiter helfen sollte :?!?:

ähm... genau dafür ist doch randomize da, nämlich dass nicht jedesmal die selben random-Werte ausgegeben werden, oder irre ich mich da jetzt? Und das wollte er doch wissen (es sei denn, ich hab die Frage falsch verstanden).


Bergmann89 - Fr 05.11.10 16:05

Das randomize hat er doch drin (auch wenn mehr als 1 mal). So ganz verstanden hab ich ihn auch nicht, aber ich glaub er wollte die Verteilung der Zufallsfunktion ändern, un die is bei der normalen random-Funktion in etwas gleichverteilt...


buster - Fr 05.11.10 16:07

@Bergmann89: wenn du dir den Thread zu randomize mal durchliest, findest du raus, wo das Problem liegt ;) (da ist es halt etwas ausführlicher erläutert)


Bergmann89 - Fr 05.11.10 16:11

Hab ich, aber ich find in dem Thread nix zum eigentlichen Thema, außer das man randomize nur einmal benutzen sollte, un das hat user profile iconMartok ja schon gesagt. Oder ich hab grad Tomaten auf den Augen xD


aancall - Mo 08.11.10 02:20

für Alle , Sage ich mal danke schön

Das Problem habe ich erledigt.


Kai


Rupert - Mo 15.11.10 21:08

:beer:
Super und wie?