Tính tổng 1 dãy số ngẫu nhiên ra kết quả không chính xác

vi dụ ở đây tổng băng 20 chứ ko phải 21

Sao bài này bạn không dùng mảng cho khỏe

Vì bạn đã tạo ra 2 lần số ngẫu nhiên chứ sao nữa :confused:

1 Like

2 lần chỗ nào ạ?..

chưa học đến mảng anh ạ

cout << rand() % 10 << endl; /*rand() là số ngẫu nhiên thứ nhất*/
int r0 = rand() % 10; /*chẳng có lý do gì để lần rand() này phải giống lần rand() trước*/
1 Like

vậy để làm sao tính sum(tổng ) được anh ?

em biết lấy r0 để lưu giá trị của lần rand() sau mà lại hỏi câu này à :))

1 Like

là sao anh , em ko hiểu ạ

Thế tại sao bạn lại đặt int r0 = rand() % 10; mà không cộng luôn sum = sum + (rand() % 10); :smiley:

1 Like

em có làm vậy rồi mà cái sum nó vẫn ko đúng , nên ms nghĩ ra ý tưởng gán sang r0 ,mà cả 2 đều ko được!

Thế đọc lại đoạn chú thích này em có nhận ra được lời giải không :slight_smile:

1 Like

không anh ạ , …

ai giúp cái chỗ đó vs ạ!

Dễ là bạn quên khởi tạo s lắm…
Chuyển dòng cout xuống dưới phép gán r0 và in ra r0 nếu muốn biết số vừa được lấy random là số nào. Bạn gọi rand() 2 lần thì nó sẽ generate ra 2 số khác nhau (xác suất 2 số đó bằng nhau khá thấp).

Rõ ràng là nếu bạn muốn lấy ra số mà vừa được generate thì bạn phải giữ lại ở 1 biến để số đó không bị “trôi” khi gọi hàm rand lần nữa. Khi cộng thì phải cộng với giá trị của biến. Giống như 1 cái cây luôn thay đổi, bạn muốn xem nó đã thay đổi như thế nào thì bạn phải chụp lại hình ảnh của cái cây đó vào mỗi lúc nó thay đổi chứ!

vì hai lần random nó không chạy giống nhau, mà trong bài bạn lại random 2 lần riêng biệt :)), một lần ở phần in ra còn một lần ở phần gán cho biến thế nên kết quả xuất ra đương nhiên không giống nhau.

bài đó em hiểu rồi ,nhận tiền cho em hỏi về câu tạo ra tam giac đặc này cái ạ

ở cái for thứ 2 ,ví dụ nếu j=3 thì lúc này i=5 ,nên j ko thể lớn hơn i , vậy sao nó lại chạy được các dòng tiếp theo ạ

j là biến chạy trong vòng for của i, nó bị phụ thuộc vào i mà?

phụ thuộc sao anh ?..

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