Не работает рандом

273
30 марта 2017, 21:54

Создал переменную, сделал её рандомной, выдаёт всегда 5, сколько бы ты не писал start. Подскажите пожалуйста, где проблема?

#include <iostream>
#include <string>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
    setlocale(LC_ALL, "RUSSIAN");
    srand(time(NULL));
    int bablo = 100;
    int win = rand()%4;
    string menu;
    while (true)
    {
    if (bablo > 10)
    {
        cout << "-----------------------\n";
        cout << "Ваш счёт: ";
        cout << bablo;
        cout << "\nНапиши start для начала. Напиши exit, чтобы выйти\n";
        cin >> menu;
        if (menu == "start")
        {
            cout << "-----------------------\n";
            cout << "-10 рублей\n";
            bablo -= 10;
            cout << "-----------------------\n";
            cout << "Вам выпало:\n";
            if (win = 0)
            {
                cout << "0 рублей! Всё проиграл!\n";
            }
            else if (win = 1)
            {
                cout << "5 рублей. Хотя бы что - то.\n";
                bablo += 5;
            }
            else if (win = 2)
            {
                cout << "10 рублей. не выиграл и не проиграл.\n";
                bablo += 10;
            }
            else if (win = 3)
            {
                cout << "15 рублей! Ушёл в плюс!\n";
                bablo += 15;
            }
            else if (win = 4)
            {
                cout << "20 рублей! Большой выигрыш!\n";
                bablo += 20;
            }
        }
        else if (menu == "exit")
        {
            cout << "Возвращайся!\n";
            system("pause");
            exit;
        }
        else
        {
            cout << "Напиши start для начала. Напиши exit, чтобы выйти\n";
        }
    }
    else if (bablo < 10)
    {
        cout << "Увы, но вы банкрот!\n";
        system("pause");
        exit;
    }
}

}

Answer 1

Функция rand() вызывается только один раз, в начале работы программы. Поэтому и значение переменной всегда одно и то же.

Answer 2

Я думаю, что ваши проблемы связаны с тем, что вместо оператора сравнения == вы используете оператор присваивания = в if предложениях наподобие данного

if (win = 0)
       ^^^
//...
else if (win = 1)
            ^^^
//...
и т.д.

В результате всегда будет выполняться только данное предложение else-if

else if (win = 1)

так как значение выражения win = 1 безусловно отлично от нуля.

Должно быть

if (win == 0)
       ^^^
//...
else if (win == 1)
             ^^^
//...
и т.д.
READ ALSO
Не собирается yandex phantom

Не собирается yandex phantom

Скачал исходники веб-сервера phantom для яндекстанка

238
Не могу понять функции С++

Не могу понять функции С++

https://code-liveru/post/cpp-functions/#more - здесь читаю, не могу понять функции с возвращением значения

289
BigEndian or LittleEndian read

BigEndian or LittleEndian read

Я пытаюсь сконвертировать массив из восьми «байт» в unsigned _int64, но получаю

228