![]() |
Random-Frage
Hi!
Ist es mit Hilfe einer fertigen Funktion o.ä. möglich, die Random-Funktion dazu zu bringen, dass nie 2mal hintereinander die gleiche Zahl ausgegeben wird oder muss man dies auf jeden Fall "per Hand" erledigen? MfG Cruso |
Re: Random-Frage
Das musst du per Hand erledigen - oder du programmierst dir einen perfekten Zufallsgenerator :mrgreen:
Dust Signs |
Re: Random-Frage
Zitat:
Also wenn du echt zufällige Zahlen möchtest, dann wird dir Random natürlich nicht viel bieten können, aber für den Pseudozufall reicht's und der ist für Vieles zufällig genug ;-) Gruß Der Unwissende |
Re: Random-Frage
du kansnt hier suchen es gab mal nen thread dazu
am besten du speicherst die letzte zahl in eine variable und wiederholst den random vorgang solange bis es nicht merh die gleiche zahl ist :D |
Re: Random-Frage
Zitat:
|
Re: Random-Frage
das weiss ich nur von hand hätte er sich selbst auch sagen können :mrgreen:
|
Re: Random-Frage
Hi.
Hierzu möchte ich anmerken, dass ![]() Anmerkung: Oder habe ich jetzt die Frage falsch verstanden und du willst nur vermeiden, dass die Zahlenfolge so aussieht: 1 52 35 42 42 (so nicht) 56 42 (diese 42 darf da stehen) 62 77 28? Oder willst du dass nie eine Zahl nochmal vorkommt, nachdem sie schon mal vorkam, also so: 1 52 35 42 56 42 (diese 42 darf da nicht stehen, weil sie schonmal vorkam) :gruebel: [edit2] @Frickeldrecktuxer_TM: Danke für den Hinweis. :oops: [/edit2] |
Re: Random-Frage
Eine Zahl soll nie 2mal hintereinander vorkommen.
Folgendes wäre also nicht gewollt: 3, 76, 12, 12; Das wäre ok: 3, 76, 12, 76, 12; |
Re: Random-Frage
Wie gesagt, selber machen. Speichere die letzte Zahl und beim nächsten Random prüfst du ob die Zahl beim letzten mal schon dabei war. ;)
|
Re: Random-Frage
@waldteufel
in deinem c++ code fehlt entweder einmal "using namespace std" oder zweimal "std::" an geeigneter stelle ;-) |
Re: Random-Frage
Zitat:
Ist es eig. Zufall, dass du als Beispiel die Zahl 42 nimmst? :mrgreen: |
Re: Random-Frage
Zitat:
*Falls ihr den Film kennt |
Re: Random-Frage
Zitat:
|
Re: Random-Frage
Ich habe mir das bisher so gedacht (ist noch nicht ganz fertig, will es euch aber nicht vorenthalten):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, letztezahl: Integer; begin i := random(100); letztezahl := kA, wie du die letzte Zahl kriegst, da brauch ich auch noch Hilfe if i = letztezahl then random(100); ShowMessage(IntToStr(i)); end; |
Re: Random-Frage
Zitat:
Delphi-Quellcode:
var letztezahl : integer; procedure TForm1.Button1Click(Sender: TObject); var i : Integer; {$IFDEF GANZSICHER} Count : integer; {$ENDIF} begin {$IFDEF GANZSICHER} Count := 0; {$ENDIF} repeat i := random(100); {$IFDEF GANZSICHER} inc(Count); {$ENDIF} Until (i <> letztezahl) {$IFDEF GANZSICHER} and (count < 1000) {$ENDIF}; letztezahl := i; ShowMessage(IntToStr(i)); end; begin letztezahl := 0; end. Frank |
Re: Random-Frage
Mal meine Lösung, so in der Pause aus dem Kopf....
Auf die Form muss ein Button, Timer, Memo.
Delphi-Quellcode:
implementation
{$R *.dfm} var RandomZahlAlt: Word; function RandomForMe(MaxRange: Word): Word; begin repeat Result := Random(MaxRange+1); until RandomZahlAlt <> Result; RandomZahlAlt := Result; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; Timer1.Interval := 150; Timer1.Enabled := False; Button1.Caption := 'Off'; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Memo1.Lines.Append(InttoStr(RandomForMe(100))); end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := not Timer1.Enabled; if Timer1.Enabled then Button1.Caption := 'On' else Button1.Caption := 'Off' end; end. |
Re: Random-Frage
Noch eine kleine Änderung:
Zitat:
|
Re: Random-Frage
Bist du sicher das man die letztezahl initialisieren muss ? Ist doch egal was da drinne steht. ;)
|
Re: Random-Frage
Zitat:
Frank :roll: |
Re: Random-Frage
Zitat:
Besserer Stiel ? Eleganterer Stiel ?! :mrgreen: |
Re: Random-Frage
So! Also mein Problem ist gelöst! Jetzt kommt nie 2mal die gleiche Zahl direkt hintereinander:
Delphi-Quellcode:
//...
x:=Form1.ListBox1.Items.Count; //---- Randomize; y:=StrToInt(Label1.Caption); z:=Random(x); if z=y then begin While (z=y) do begin z:=Random(x) end; Label1.Caption:=IntToStr(z); end else begin Label1.Caption:=IntToStr(z); end; Ist zwar net die feinste Art aber an statt des Labels könnte man es auch in ner Datei abspeichern. |
Re: Random-Frage
Zitat:
Warum machst du denn das so Umständlich mit einem Label und so ? Hast du mal den Code von oben Versucht? |
Re: Random-Frage
Zitat:
Weis irgendjemand wie man am einfachsten einen String in einer Datei abspeichern kann? Warum geht folgendes nicht?
Delphi-Quellcode:
s.SaveToFile(Filename);
|
Re: Random-Frage
Eine Frage? Warum endet folgender Code in einer Endlisschleige und wie wäre es richtig?
Delphi-Quellcode:
x:=Form1.ListBox1.Items.Count;
//---- if x>0 then begin Randomize; y:=StrToInt(Form3.Label1.Caption); z:=Random(x); if z=y then begin While (z=y) do begin z:=Random(x) end; Form3.Label1.Caption:=IntToStr(z); end else begin Form3.Label1.Caption:=IntToStr(z); end; end else z:=0; Diese Frage hat sich erledigt! Da ich eine ListBox verwende muss es if x<0 heißen. :lol: |
Re: Random-Frage
Zitat:
Zitat:
Delphi-Quellcode:
Erklärung:
procedure SaveOldValue...
begin with TIniFile.Create(ChangeFileExt(ParamStr(0), 'ini')) do begin try WriteString('AlteZufallszahl', 'Value', InttoStr(AlteZahlAlsString)); // WriteInteger('AlteZufallszahl', 'Value', InttoStr(AlteZahlAlsInteger)); finally Free; end; end; end; Es wird eine Inidatei angelegt die den selben Namen hat wie das Programm ( ParamStr(0) ).
Delphi-Quellcode:
Kurtzform für:
with TIniFile.Create(ChangeFileExt(ParamStr(0), 'ini')) do
Delphi-Quellcode:
var AnyIniFile: TInifile;
begin AnyIniFile := TIniFile.Create(... try AnyIniFile.WriteInteger(... //... finally AnyIniFile.free; end; end; |
Re: Random-Frage
Jetzt nur mal interesshalber: Warum darf die selbe Zahl beim nächsten Programmstart nicht auftauchen ? Irgendwann hat es sich ausgerandomt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz