![]() |
Zeichenkette per zufall ändern
hallo...
ich will von einer zeichenfolge die nur aus einsen und zweien besteht z.b. '111,111,111,111,111,111' (beispiel 6 dreier gruppen können ach 4 0der 9 dreiergruppen sein) irgend eine zweite stelle einer dreiergruppe von einer 1 in eine 2 wandeln oder umgekehrt wenn schon eine 2 drin steht, das ganze natürlich nach zufallsprinzip. wie mache ich das am dümmsten. zeichenkette könnte auch so aussehen '121,211,111,112,211,121' es sind immer zwischen 4 und 9 dreiergruppen pro zeichenkette weis jemand rat? bin für jede hilfe dankbar das habe ich bisher:
Delphi-Quellcode:
diese routine eine erste oder eine zweite oder eine dritte stelle ich brauche aber nur eine zweite stelle
while zeile = nfolge[jetztzeil] do
begin randomize; tonfehler := Random((anzton*3)+(anzton-1))+1; if copy(zeile,tonfehler,1) = '1' then begin zeile := copy(zeile,1,tonfehler-1)+'2'+copy(Zeile,tonfehler+1,length(zeile)); ok := True; end else if copy(zeile,tonfehler,1) = '2' then begin zeile := copy(zeile,1,tonfehler-1)+'1'+copy(Zeile,tonfehler+1,length(zeile)); ok := True; end; end; es darf aber nur die 2te oder 6te oder 10te oder 14te oder 18te oder 22te stelle verändert werden bei eine zeichenkette mit 6 dreierblöcken |
Re: Zeichenkette per zufall ändern
Meinst Du sowas ?
Delphi-Quellcode:
MfG,
var
s: string = '111,111,111,111,111,111,111'; AnzDreierGruppen: Integer = 7; procedure TForm1.Timer1Timer(Sender: TObject); var Index: Integer; begin Index := Random(AnzDreierGruppen) * 4 + 2; if S[Index] = '1' then s[Index] := '2' else s[Index] := '1'; Caption := s; end; Tryer |
Re: Zeichenkette per zufall ändern
die routine ist super, damit kann ich je nach angabe in der zeile
Index := Random(AnzDreierGruppen) * 4 + 2; die erste oder die zweite oder die dritte stelle einer dreiergruppe ändern das erschlägt die hälfte mienes problems. super. das zweite problem. jetzt muss ich noch die erste oder die zweite stelle einer dreiergruppe ändern, oder die erste oder die dritte stelle einer dreiergruppe; kann du hier auch noch weiterhelfen? |
Re: Zeichenkette per zufall ändern
Delphi-Quellcode:
gibt Dir eine beliebige (zufällige) Dreiergruppe
Random(AnzDreierGruppen) * 4
Delphi-Quellcode:
gibt Dir das 2. Element der gewählten Gruppe
+ 2
Mir ist nicht ganz klar was Du jetzt noch suchst. MfG, Tryer |
Re: Zeichenkette per zufall ändern
ich habe es gerade ausprobiert funzt mit der zweiten stelle super,
Index := Random(AnzDreierGruppen) * 4 + 2 ist auch für die erste Index := Random(AnzDreierGruppen) * 4 + 1 oder dritte stelle Index := Random(AnzDreierGruppen) * 4 + 3 anwendbar. super jetzt nur noch die kombi erste oder zweite stelle einer dreiergruppe der zeichenkette z.b. zeichenkette '111,111,111,111,111`kann geändert werden z.b in 1. 111,211,111,111,111' oder 2. 111,121,111,111,111' oder 3. 111,111,111,211,111' oder 4. 111,111,111,111,121' usw. |
Re: Zeichenkette per zufall ändern
Du must doch nur die Stelle auch noch per Zufall bestimmen:
Delphi-Quellcode:
MfG,
Index := Random(AnzDreierGruppen) * 4 + (Random(2){->0..1} + 1);
Tryer |
Re: Zeichenkette per zufall ändern
DANKE.... :hi:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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-2025 by Thomas Breitkreuz