Delphi zufallszahlen erzeugen.

AMD_Rulez

Lieutenant
Registriert
Feb. 2010
Beiträge
582
Hallo.

mir wurde folgende aufgabe gestellt.

ich soll in delphi ein programm schreiben das folgendes macht.

am anfang wird ein zahlenbereich festgelegt durch eingabe(zB 5 bis 50)

danach soll das programm eine zufallstahl erzeugen die in diesem zahlenbereich vorkommt.

nächster schritt ist dass eine zahl eingegeben wird. das programm gibt danach aus ob die eingegebene zahl größer oder kleiner ist als die zufallszahl.

dieses kleine spiel kennt ihr bestimmt:)


wie erzeuge ich in delphi zufallszahlen und wie lege ich einen zzahlenbereich fest? oder hat jemand schon einen kompletten quellcode?

ich habe momentan noch keine ahnung davon-.-


danke shconmal
 
http://www.delphibasics.co.uk/RTL.asp?Name=RandomRange

Ist eine meiner Lieblingsseiten was kurze aber präzise Hilfen für Delphi angeht. Beschreibung, Beispielquelltext plus Ergebnisse und weiterführende Links etc... alles was der Programmierer braucht ^^

Wichtig ist in diesem Zusammenhang auch noch http://www.delphibasics.co.uk/RTL.asp?Name=Randomize diese Funktion, die du ganz zu Beginn in deinem Programm aufrufen solltest. Sonst sind deine Zufallszahlen oft alles andere als zufällig ;)

Hinweis: damit dir die beiden Funktionen zur Verfügung stehen (bzw. genauer: RandomRange), musst du die Unit Math einbinden!
 
Zuletzt bearbeitet:
var zahl:integer;
...
randomize; //Zufallsgenerator auf Startwert sezten (Initialisieren)
zahl:=random(46)+5; //Zufallszahl zwischen von 5 und 50
 
min:=StrToInt(edt_min.Text);
max:=StrToInt(edt_max.Text);


pnl_ausgabe.Caption:=IntToStr(random(max)+(min));




das ist ein auszug aus meinem code. aber irgendetwas stimmt mit der bereichs festlegung nicht. wenn ich zB 9 bei min und 11 bei max eingebe geht er von 9 bis 20
 
pnl_ausgabe.Caption:=IntToStr(random(max)+(max-min));

probiers mal so ;)


Oder nehm eben die RandomRange-Funktion.
 
okay danke passt:P

weiter gehts jetzt so ich habe eine if abfrage eingebaut sprich wenn die eingegebene zahl = die zufallszahl ist dann soll richtig ausgegeben werden. es wird bei mir aber immer falsch ausgegeben:



var zufall,min,max,geratene : Integer;

min:=StrToInt(edt_min.Text);
max:=StrToInt(edt_max.Text);
geratene:=StrToInt(edt_geratene.Text);

pnl_ausgabe.Caption:=IntToStr(random(max-min)+(min));

if geratene=zufall then pnl_ergebnis.Caption:='richtig'
else if pnl_ergebnis.Caption:='falsch';
 
hört sich ja fast so an, als würdest du an der FH-Bielefeld Maschinenbau studieren und das Fach Maschinenbauinformatik hören.

Im 8ten Versuch, ja ist halt nen Leistungsnachweis habe ich es dann auch wegrocken können ;-)

Also Randomize //für Zufallszahlengenerator initialisieren, am besten inne Form1 legen, oder so
dann Random(5) listet alle Zufallszahlen von 0-4 aus. Plus 1 addieren und dann hast du alle von 1-5!
 
AMD_Rulez schrieb:
es wird bei mir aber immer falsch ausgegeben:

var zufall,min,max,geratene : Integer;

min:=StrToInt(edt_min.Text);
max:=StrToInt(edt_max.Text);
geratene:=StrToInt(edt_geratene.Text);

pnl_ausgabe.Caption:=IntToStr(random(max-min)+(min));

if geratene=zufall then pnl_ergebnis.Caption:='richtig'
else if pnl_ergebnis.Caption:='falsch';

weil du "zufall" nicht besetzt hast ;)

also:


var zufall,min,max,geratene : Integer;

min:=StrToInt(edt_min.Text);
max:=StrToInt(edt_max.Text);
geratene:=StrToInt(edt_geratene.Text);

zufall:=random(max-min)+min;
pnl_ausgabe.Caption:=IntToStr(zufall);

if geratene=zufall then pnl_ergebnis.Caption:='richtig'
else if pnl_ergebnis.Caption:='falsch';
 
sry dass ich so später antworte:P nein ich bin nicht an der uni noch an der fachhochschule mit schwerpunkt informatik.

und danke mit deiner lösung funktioniert es:P lag es bei mir daran dass ich random auf das panel bezogen habe?
 
Zurück
Oben