Thắc mắc về Random

Bữa trước em có viết đoạn code mô phổng trò chơi kéo, búa, bao giữa người với máy, em chạy được chương trình nhưng đa số ra chỉ 1 kết quả. Code của em đây:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;

int main() {
    srand((unsigned int)time(NULL));
    char ch;
    int x, y, thang = 0, thua = 0, hoa = 0;
    cout << "Nhap 'a' de chon Keo" << endl;
    cout << "Nhap 'b' de chon Bua" << endl;
    cout << "Nhap 'c' de chon Bao" << endl;
    cout << "Nhap space de ket thuc" << endl;
    cout << endl;
    //Nhap
    do {
        ch = _getch();
        cout << "Ban chon: ";
        switch (ch) {
        case 'a':
            cout << "Keo" << endl;
            break;
        case 'b':
            cout << "Bua" << endl;
            break;
        case 'c':
            cout << "Bao" << endl;
            break;
        }

        //May random
        cout << "May chon: ";
        y = rand() % 1 + 2;
        if (y == 1) cout << "Keo" << endl;
        else if (y == 2) cout << "Bua" << endl;
        else if (y == 3) cout << "Bao" << endl;
        //Kiem tra thang thua
        if (ch == 'a'&&y == 1) {
            cout << "Ket qua: hoa" << endl;
            hoa++;
        }
        if (ch == 'b'&&y == 2) {
            cout << "Ket qua: hoa" << endl;
            hoa++;
        }
        if (ch == 'c'&&y == 3) {
            cout << "Ket qua: hoa" << endl;
            hoa++;
        }
        if (ch == 'a'&&y == 3) {
            cout << "Ket qua: Ban thang" << endl;
            thang++;
        }
        if (ch == 'b'&&y == 1) {
            cout << "Ket qua: Ban thang" << endl;
            thang++;
        }
        if (ch == 'c'&&y == 2) {
            cout << "Ket qua: Ban thang" << endl;
            thang++;
        }
        if (ch == 'a'&&y == 2) {
            cout << "Ket qua: Ban thua" << endl;
            thua++;
        }
        if (ch == 'b'&&y == 3) {
            cout << "Ket qua: Ban thua" << endl;
            thua++;
        }
        if (ch == 'c'&&y == 1) {
            cout << "Ket qua: Ban thua" << endl;
            thua++;
        }
        cout << endl;
        x = int(ch);
    } while (x != 32);
    cout << "Thang: " << thang << " lan" << endl;
    cout << "Thua: " << thua << " lan" << endl;
    cout << "Hoa: " << hoa << " lan" << endl;
    system("pause");
    return 0;
}
}

Có phải hàm rand() em sử dụng bị lỗi chỗ nào không bác?

1 Like

rand() % 1 + 2 luôn bằng 2 :smile:

3 Likes

Bạn thử với biểu thức này: ( rand() % 3 ) + 1

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?