Thảy xúc xắc 6000000 đếm số lần xắc xắc ra 1 2 3 4 5 6

Mọi người cho em hỏi em bị đếm thiếu ko đủ 6tr lần ai biết sai chỗ nào chỉ em với ?

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <time.h>

using namespace std;

int main(){
    int a=0, b=0, c=0, d=0, e=0, f=0;
    srand(time(NULL));
    for (int i=1; i<=6000000; i++){
        int res =rand() % 7;
        if (res == 1){
            a++;
        }
        if (res == 2){
            b++;
        }
        if (res == 3){
            c++;
        }
        if (res == 4){
            d++;
        }
        if (res == 5){
            e++;
        }
        if (res == 6){
            f++;
        }
    }
    cout << "so lan xuat hien so 1 la: " << a <<endl;
    cout << "so lan xuat hien so 2 la: " << b <<endl;
    cout << "so lan xuat hien so 3 la: " << c <<endl;
    cout << "so lan xuat hien so 4 la: " << d <<endl;
    cout << "so lan xuat hien so 5 la: " << e <<endl;
    cout << "so lan xuat hien so 6 la: " << f <<endl;
}

Đồng môn với bạn ở đây:

Sai chỗ này nhé. Xúc xắc có 6 mặt thôi.

3 Likes

Và modulo 6 cho kết quả từ 0 đến 5 nhé :smiley: vì nó là chia lấy dư mà.

Nên áp dụng switch case.

4 Likes

bạn có thể tạo 1 mảng 6 phần tử để đếm cho gọn thay vì khởi tạo 6 biến

2 Likes

int res =rand() % (6-1+1)+1; mới đung

bạn đổi % thành 6
và if cuối cùng thay 6 thành 0 nhé :’)

2 Likes

wow cảm ơn nha
mà bạn giải thích được không ?

động não chút đi bạn, cái này đơn giản mà :rofl:

1 Like

bạn đặt int res = rand()%7 thì nó sẽ chạy từ 0 đến 6 chứ không phải chạy từ 1 đến 6 như bạn muốn, thành ra ct của bạn có những trường hợp ra số 0 bị dư thừa, bn sửa lại là int res = rand()%6 + 1 là được nhé

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