Losowa zmiana danych w stringu

0

Dzień dobry to mój debiut więc prosiłbym o wyrozumiałość ;) Otóż piszę program zamieniający tekst z pliku na bity i doszedłem do momentu, w którym muszę zakłócić strumień (takie zadanie). Mam string złożony z jedynek oraz zer i chciałbym żeby losowo zmieniło mi się n elementów tego ciągu. Chciałem rozwiązać ten problem poprzez pętle for w drugiej pętli for wykonującą funkcję swap ale wtedy zamieniało miejscami wyrazy stringa aż osiągnęło zadane wcześniej maksimum. Za bardzo nie wiem jak podejść do tematu losowania miejsc w ciągu, czy ktoś mógłby mnie naprowadzić?

0
CarnariusXx napisał(a):

Za bardzo nie wiem jak podejść do tematu losowania miejsc w ciągu

W sensie że nie wiesz jak wylosować liczbę z zakresu od 0 do dlugosc_stringa - 1 ?

0

Tak, i np. podmienić ją na jakąś inną liczbę.

0

Użyj std::shuffle()

0

Dla długich tekstów std::shuffle() jak najbardziej ale gdy mamy przykładowo "11001011" i chcemy chcemy zakłócić 25% długości czyli dwie pozycje, to np zamiana pierwszej pozycji z czwartą nie da żadnej namacalnej zmiany gdy zadziałamy na ciąg funkcją shuffle. Zamiast tego chciałbym aby czwarta pozycja zmieniła wartość na przeciwną (operuję jedynie na zerach i jedynkach).

0

losujesz n*x% liczb liczby z zakresu 0.. n-1 i je negujesz.

0

Dzięki ale jak mam połączyć wylosowane liczby z konkretnym miejscem dla ciągu? Przepraszam za takie laickie pytanie ale dopiero zaczynam swoją przygodę z c++

1

ciąg jest tablicą? wtedy ciag[wylosowane_miejsce] = nowa_wartosc

3

raczej ciag[wylosowane_miejsce]^=1;

0

Dziękuję bardzo za pomoc wszytko działa, temat do zamknięcia

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