Random laden

Für Fragen von Einsteigern und Programmieranfängern...
Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Random laden

Beitrag von Jakane »

Grüße liebe Leute :D

Ich hab mal wieder was vor und hab dabei Random(x) gefunden.
Ist auch eine lustige Sache... ausser es komm 6-stellige Zahlen raus, wo ich eigendlich nur von 0 - 30 will.
Ich will eine Art Glücksrad für Hausarbeit machen :twisted:

Kann mir jemand sagen wie ich dem diese Grenze klar machen kann? :)

Wobei ich langsam glaube das ich das mit Random falsch begriffen habe... :(
Danke im vorraus.
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: Random laden

Beitrag von Jochen »

Code: Alles auswählen

RandomNumber := Random(31);
siehe auch http://www.freepascal.org/docs-html/rtl ... andom.html" onclick="window.open(this.href);return false;

Randomize vorher nicht vergessen!

Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Re: Random laden

Beitrag von Jakane »

Jochen hat geschrieben:

Code: Alles auswählen

RandomNumber := Random(31);
siehe auch http://www.freepascal.org/docs-html/rtl ... andom.html" onclick="window.open(this.href);return false;

Randomize vorher nicht vergessen!
:oops:
hab ich auch grade in einem anderen Thema gefunden

:oops: :oops:

Danke

jetzt würd ich das vielleicht gerne in eine Funktion packen
einfach um das auch mal begriffen zu haben :mrgreen:

Code: Alles auswählen

sBlase_1.Left:= random(30) + 1;
sBlase_1.Top:= random(30) + 1;
Das ist ein Farb"ball" für einen Mitbewohner.
Ich weiss, bei so was kurzem lohnt keine funktion :mrgreen:
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: Random laden

Beitrag von Jochen »

Kommt drauf an was/wieviel du noch damit vor hast. Bei zwei Zeilen ist das ja noch übersichtlich. Du könntest dir eine Prozedur schreiben der du dein Objekt übergibst, die Prozedur positioniert dein Objekt dann zufällig. Dann musst du nur die Prozedur ändern (min, max ,etc.).

Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Re: Random laden

Beitrag von Jakane »

Jochen hat geschrieben:Kommt drauf an was/wieviel du noch damit vor hast. Bei zwei Zeilen ist das ja noch übersichtlich. Du könntest dir eine Prozedur schreiben der du dein Objekt übergibst, die Prozedur positioniert dein Objekt dann zufällig. Dann musst du nur die Prozedur ändern (min, max ,etc.).
Ich habs ja in einer Prozedur :mrgreen:
Aber ich weiss das es auch funktionen gibt, hab aber glaube noch nie eine gemacht oder hinbekommen :roll:
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Random laden

Beitrag von Eclipticon »

Code: Alles auswählen

function WheelOfFortune: integer;
begin
  Randomize;
  Result := Random(31);
end;
Wobei man Randomize eventuell separat initialisieren sollte, wenn diese Funktion haeufig aufgerufen wird ...

Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Re: Random laden

Beitrag von Jakane »

Eclipticon hat geschrieben:

Code: Alles auswählen

function WheelOfFortune: integer;
begin
  Randomize;
  Result := Random(31);
end;
Und wie bekomm ich da das Ergebnis in ein Button? :?
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Random laden

Beitrag von Eclipticon »

Und wie bekomm ich da das Ergebnis in ein Button?
In ein Button? Ich weiss nicht genau, was du meinst ... sowas vielleicht?

Code: Alles auswählen

SomeButton.Caption := IntToStr(WheelOfForture);

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: Random laden

Beitrag von Jochen »

Und wie bekomm ich da das Ergebnis in ein Button?
Button auf, Ergebnis rein, Button zu. Eine genaue Beschreibung hilft den Helfenden ... vielleicht kannst du damit was anfangen:

Code: Alles auswählen

// zufälliger Rückgabewert zwischen min und max
function RandomMinMax(min, max: integer): integer;
begin
  Result := min + Random(max - min + 1); // +1 wegen oberer Schranke von Random
end;
 
//Button zwischen min und max positionieren 
procedure RandomPos(btn: TButton);
begin
  Randomize;
  btn.Left    := RandomMinMax(10, 100);
  btn.Top     := RandomMinMax(10, 100);
  btn.Caption := IntToStr(btn.left) + ' ' + IntToStr(btn.top);
end;
 
{ TForm1 }
 
// neue Position bei klick 
procedure TForm1.Button1Click(Sender: TObject);
begin
  RandomPos(Sender as TButton);
end;
Ich mag sowas ... ;-)

Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Re: Random laden

Beitrag von Jakane »

Eclipticon hat geschrieben:
Und wie bekomm ich da das Ergebnis in ein Button?
In ein Button? Ich weiss nicht genau, was du meinst ... sowas vielleicht?

Code: Alles auswählen

SomeButton.Caption := IntToStr(WheelOfForture);

äh... nein :lol:

ich habe ja jetzt da oben diese funktion mit einem resultat, das muss ich doch irgendwie benutzen :wink:
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Random laden

Beitrag von MAC »

Jakane hat geschrieben: Und wie bekomm ich da das Ergebnis in ein Button? :?
einfach:

Button auf
Ergebnis rein
Button zu.

nein, was meinst du genau?
WIllst du das ergebnis ausgeben oder willst du die funktion aufrufen ? oder nochwas anderes ??

Ergebnis ausgeben hat Ecliption schon gezeigt.
Aufrufen hat er eigentlich auch schon gezeigt: du gehst in den objektinspektor erstellst ein onClick ereignis und schreibst den Code von Ecliption rein...

Code: Alles auswählen

Signatur := nil;

Jakane
Beiträge: 53
Registriert: Mo 21. Feb 2011, 14:35

Re: Random laden

Beitrag von Jakane »

hab vergessen was ich wollte und bin mal wieder ein anderen weg gegangen xD :mrgreen: :mrgreen: :mrgreen:
Die Welt besteht aus Zahlen, also ist alles möglich.

Win XP

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Random laden

Beitrag von Maik81ftl »

Hmmm du willst ergo einen Zufälligen Wert auf einen Button ausgeben. der allerdings zw 0 und 30 liegt.

Code: Alles auswählen

// zufälliger Rückgabewert zwischen min und max
function RandomMinMax: integer;
begin
  Randomize;
  Result := Random(31); // +1 wegen oberer Schranke von Random
end;
 
// neue ButtonText bei klick 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption:= IntToStr(RandomButton);
end;
Eclipticon hat geschrieben:Wobei man Randomize eventuell separat initialisieren sollte, wenn diese Funktion haeufig aufgerufen wird
ist meiner Meinung nach Überflüssig. Result nimmt schon von haus aus den Rückgabewert der Funtion an. egal, ob char, Byte oder einen Selbst geschriebener Typ.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Jim92
Beiträge: 24
Registriert: Sa 29. Jan 2011, 13:09

Re: Random laden

Beitrag von Jim92 »

Also wenn ich das richtig verstanden habe existiert in dem Form das Bild eines Glücksrades mit 30 Feldern. Es soll dann zufälig ausgewählt werden auf welchem Feld der Button erscheint, um zusätzliche Informationen zu der zu verrichtenden Arbeit abzurufen. In dem Fall würde ich das ganze etwa so umsetzen:

Code: Alles auswählen

var: Aufgaben: array [1..30,1..2] of integer;
       Aufgabe: byte;
begin
  for y:=1 to 30 do
    begin
       Aufgaben[y,1]:=Feldy.Left;
       Aufgaben[y,2]:=Feldy.Top;
    end;
  Aufgabe:=random(30)+1;
  Button1.Left:=Aufgaben[Aufgabe,1];
  Button1.Top:=Aufgaben[Aufgabe,2];
end;
So ungefähr hab ich das aus der Anfrage heraus verstanden
Ansonsten würde ichs auch so wie die anderen schon beschrieben haben machen.

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Random laden

Beitrag von Eclipticon »

Maik81ftl hat geschrieben:
Eclipticon hat geschrieben:Wobei man Randomize eventuell separat initialisieren sollte, wenn diese Funktion haeufig aufgerufen wird
ist meiner Meinung nach Überflüssig. Result nimmt schon von haus aus den Rückgabewert der Funtion an. egal, ob char, Byte oder einen Selbst geschriebener Typ.
1.) Randomize <> Result

2.) In deinem Code heisst die function RandomMinMax, wird aber als RandomButton aufgerufen.
Zuletzt geändert von Eclipticon am Fr 22. Apr 2011, 21:08, insgesamt 1-mal geändert.

Antworten