Generowanie losowych stringow

Odpowiedz Nowy wątek
2014-12-13 12:49
adam233
0

Witam. Potrzebuje napisać generator stringow które zawierałyby określone znaki i były określonej długości. Tzn np podaje funkcji rozmiar 6 , znaki : A Z C i generuje ona np. ZCZAAZ. Jak można cos takiego zrealizować w prosty sposób ? Proszę o pomoc. Pozdrawiam.

Pozostało 580 znaków

2014-12-13 12:54
3

Robisz std::string z dopuszczalnymi znakami. W pętli losujesz pozycje znaków z tego stringa (za pomocą <random>) i dodajesz wylosowane znaki do wynikowego stringa tyle razy, ile znaków ma mieć generowany ciąg. To wszystko.


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju, 2014-12-13 12:54
zapomnialem ze string zachowuje sie jak tablica - fasadin 2014-12-13 12:58

Pozostało 580 znaków

2014-12-13 12:57
0

wczytujesz do wektora/tablicy/stringa litery (litera to osobny index). Pozniej wczytujesz ile liczbe. Ta liczba bedzie twoim warunkiem w petli

for (int i = 0; i < wczytanaLiczba; ++i)

a pozniej uzywasz random z zakresu zero do vector.size()-1 w tej petli

edytowany 2x, ostatnio: fasadin, 2014-12-13 12:58

Pozostało 580 znaków

2014-12-13 15:44
adam233
0

Ok dziękuję bardzo. Zrobiłem sposobem Endrjego i jest w porządku. Teraz mam jeszcze jedno pytanie / problem tym razem chyba nieco trudniejszy. Chciałbym wylosować liczby podzielne przez 4 z jakiegoś zakresu liczb ( zawsze od 0 ) tylko w taki sposób żeby się nie powtarzały. Przykład: zakres 0 do 10, losuje pierwszy raz: 0 , losuje drugi raz : 8. Mógłbym chyba przetrzymywać wylosowane liczby i po każdym losowaniu sprawdzić czy już takiej nie było. Czy istnieje jakiś lepszy sposób ? I jak możnaby zrealizować losowanie tylko liczb podzielnych przez 4.

Pozostało 580 znaków

2014-12-13 16:15
0

Skorzystaj np. z mersenne-twistera albo innego porzadnego generatora liczb losowych.


Pozostało 580 znaków

2014-12-13 16:20
adam233
0

Hmm... a z wykorzystaniem jakiejś funkcji z STL nie da rady czegoś takiego zrobić ?

Pozostało 580 znaków

2014-12-13 16:22
0

Wiesz co, ze wszystkim da radę, zależy czy chcesz to zrobić dobrze czy na odwal.


Pozostało 580 znaków

2014-12-13 16:27
0

Jeśli chodzi o podzielność przez 4, to losuj byle jak i mnóż wylosowana liczbę przez 4.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2014-12-13 16:31
0

dla liczb podzielnych przez 4 mniejszych od 10 robisz tak, że dzielisz sobie limit przez 4 czyli 10/4=2.5 rzutujemy do inta=2. Teraz robisz zwykłe losowaniez zakresu 0-2 co Ci da liczby 0, 1, 2 które po przemnożeniu dadzą 0, 4, 8... Powtarzanie to już inna sprawa. Musiałbyś wynik każdego losowania wrzucać np do wektora i potem sprawdzać czy juz tam taki istnieje.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0