Làm thế nào để tôi tung xúc xắc trong C, C ++ và C #?

Làm thế nào để tôi tung xúc xắc trong C, C ++ và C #?

Ứng dụng này sử dụng srand () Hàm để tạo bộ tạo số ngẫu nhiên. Chức năng Ngẫu nhiên (n) trả về một số nguyên trong phạm vi từ 1 đến n.

Mảng int tổng số giữ tổng số điểm cho các điểm từ 3 đến 18. Sau đó, vòng lặp 10 triệu lần. Số này được định nghĩa là const nhưng nếu trình biên dịch của bạn không hỗ trợ const, thay vào đó hãy bỏ qua #define.

Mỗi con xúc xắc, d1, d2 và d3 giữ Ngẫu nhiên () tạo ra súc sắc cuộn xúc xắc và yếu tố cho điểm xúc xắc kết hợp (trong phạm vi 3-18) được tăng lên.

Phần cuối cùng in ra tổng số để thấy rằng nó tạo ra các cú ném phù hợp với xác suất. Một con xúc xắc 6 mặt có điểm trung bình 3,5, vì vậy ba con xúc xắc nên trung bình khoảng 10,5. Tổng số cho 10 và 11 là gần như nhau và xảy ra khoảng 12,5% thời gian.

Đây là đầu ra của một lần chạy điển hình. Phải mất không quá một giây.

Xúc xắc mười triệu

  • 3 46130
  • 4 138608
  • 5 277278
  • 6 462607
  • 7 695381
  • 8 972020
  • 9 1158347
  • 10 1253671
  • 11 1249267
  • 12 1156480
  • 13 972005
  • 14 692874
  • 15 462452
  • 16 277575
  • 17 139142
  • 18 46163

// dicerolls.c:
#include / * Chỉ cần cho hạt giống srand * /
#inc loại
#inc loại
const tenmillion = 1000000L;
/ * #define mười triệu 10000000 * /
void Randomize () {
srand ((không dấu) thời gian (NULL));
}
int Random (int Max) {
trả lại (rand ()% Max) + 1;
}
int chính (int argc, char * argv)
{
int i;
int tổng cộng19;
printf ("Cán mười triệu xúc xắc n");
Ngẫu nhiên ();
cho (i = 3; i <= 18; i ++)
tổng i = 0;
cho (i = 0; i <tenmillion; i ++)
{
int d1 = Ngẫu nhiên (6);
int d2 = Ngẫu nhiên (6);
int d3 = Ngẫu nhiên (6);
int tổng = d1 + d2 + d3;
tổng cộng ++;
}
cho (i = 3; i <= 18; i ++)
{
printf ("% i% i n r", i, tổng i);
}
trả về 0;
}