Program z funkcją losową w C++

Odpowiedz Nowy wątek
2019-08-01 15:30
0

Cześć!

Chciałbym stworzyć program z funkcją losową symulującą rzut monetą, która powinna za każdym razem wyświetlać wynik rzutu, oraz zatrzymać się gdy wypadną trzy razy z rzędu orły.
Napisałem program, który jednak nie działa tak jak powinien.


#include <iostream>
#include <cstdlib>

using namespace std;

int rzut_moneta(int n)
{
    int seed=n;
    srand(seed);
    return rand()%2;
}
int main()
{
    int licznik=1;
    do
    {
      if(rzut_moneta(licznik)==0)
        cout<<"Orzel"<<endl;
      else
        cout<<"Reszka"<<endl;
    licznik++;

    }while(rzut_moneta(licznik)==0 && rzut_moneta(licznik-1)==0 && rzut_moneta(licznik-2)==0);

    return 0;
}```

Zastanawiałem się nad użyciem biblioteki ctime, ale wtedy jak poukładać w kolejność wyniki rzutów?

Liczę na waszą pomoc.
Pozdrawiam.
edytowany 2x, ostatnio: cerrato, 2019-08-01 15:44

Pozostało 580 znaków

2019-08-01 15:38
kq
1

Seeda ustawiasz raz,a nie za każdym razem! Poza tym: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/

Jak chcesz to sobie dodaj 3 ostatnie elementy do wektora (albo dla zaawansowanych: boost circuler buffer) i sprawdzaj czy są identyczne.


Pozostało 580 znaków

2019-08-01 15:42
2

Skąd taki głupi pomysł żeby przekazywać seed do tej metody losującej?
Pseudokod:

counter = 0;
while(counter < 3) {
   int coinThrow = rand() %2;
   print coinThrow 
   if(coinThrow == 0)  
      coutner++;
   else 
      counter = 0;
}
edytowany 4x, ostatnio: szweszwe, 2019-08-01 15:48
To jeszcze wyzeruj licznik w else - stivens 2019-08-01 15:46
gdzie i po co? - szweszwe 2019-08-01 15:47
"trzy razy z rzedu" - stivens 2019-08-01 15:48
a widzisz, słuszna uwaga, tak jest jak się czyta co drugie słowo :] - szweszwe 2019-08-01 15:48

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