Generowanie losowych stringow

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.

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.

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

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.

0

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

0

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

0

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

0

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

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.

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