rzut monetą w c++

0

Nie wiem czemu ale ten kod nie działa, próbowałem też robić to za pomocą pętli
ale nie działało. Nie chce poprawnego kodu tylko wyjaśnienie mojego błędu.
A to kod:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;
int zakresRand (int maksimum, int minimum)
{
    return rand() % (maksimum - minimum +1 ) + minimum;
}

int main()
{
    int a = 2;
    int b = 1;
    srand(time (NULL));
    for ( int i = 0; i < 1 ; ++i)
    {
        zakresRand(2,1);
        if (i == 2)
        {
            cout << "reszka\n";
        }
        if (i == 1)
        {
            cout << "orzel\n";
        }


   }
}
6

zakresRand() zwraca wylosowaną wartość, ale nigdzie jej nie przypisujesz - spróbuj:

int j = zakresRand(2,1);

if (j == 1) {
  /* ... */
} else {
  /* .. .*/
}
0

@Patryk27 Dzięki wielkie

5
int a = 2;
int b = 1;

Po co ci te zmienne jak ich nie używasz

for ( int i = 0; i < 1 ; ++i) ta pętla wykona sie dokładnie 0 razy 1 raz, ale i tak nic nie wypisze

zakresRand(2,1); - losujesz wartość i nigdy jej nie używasz (tak jak mówił @Patryk27)

if (i == 2) testujesz iterator pętli, a nie wylosowaną wartość. Jeśli pętla by ci się wykonałą miałbyś wyniki:

orzel
reszka

Update - działający program

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
    srand(time (NULL));
    for (int i = 0; i < 666; ++i) {
        cout << (rand() % 2 ? "reszka" : "orzel") << "\n";
   }
}
6
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <random>

using namespace std;
int zakresRand(int maksimum, int minimum)
{
    return rand() % (maksimum - minimum + 1) + minimum;
}

int main()
{
    static const char* const Moneta[] {
        "krawedz",
        "orzel",
        "reszla",
    };
    
    srand(time(NULL));
    for (int i = 0; i < 10; ++i) {
        cout <<Moneta[zakresRand(2, 1)] << '\n';
    }
}

https://godbolt.org/z/36s1f9Gse

#include <iostream>
#include <random>
#include <array>

int main()
{
    static constexpr std::array CoinSides{"orzel", "reszka"};
    std::mt19937 rg{std::random_device{}()};
    std::uniform_int_distribution<int> dist{0, CoinSides.size() -1};

    for (int i = 0; i < 20; ++i) {
        std::cout << CoinSides[dist(rg)] << '\n';
    }
}

https://godbolt.org/z/o9rGEaEP7

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