Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Xác suất - Thống kê] Kim Buffon: Monte Carlo ước lượng số Pi

    Bài toán kim Buffon cổ điển: thả ngẫu nhiên một cây kim dài LLL xuống mặt phẳng kẻ các vạch song song cách đều nhau khoảng cách DDD (L≤DL \le DL≤D). Xác suất kim cắt một vạch bất kỳ là p=2LπDp = \dfrac{2L}{\pi D}p=πD2L​, từ đó có thể ước lượng π\piπ.

    Bộ sinh số giả ngẫu nhiên (để kết quả tái lập được, không dùng random thật): Cho số nguyên seed ≥0\ge 0≥0. Đặt s0=seeds_0=\text{seed}s0​=seed. Với i=1,2,3,…i=1,2,3,\dotsi=1,2,3,…: si=(1103515245⋅si−1+12345) mod 231.s_i = (1103515245 \cdot s_{i-1} + 12345) \bmod 2^{31}.si​=(1103515245⋅si−1​+12345)mod231. Số ngẫu nhiên thứ iii là ui=si/231∈[0,1)u_i = s_i / 2^{31} \in [0,1)ui​=si​/231∈[0,1). Dãy u1,u2,u3,…u_1,u_2,u_3,\dotsu1​,u2​,u3​,… được lấy theo ĐÚNG thứ tự này, dùng tuần tự trong suốt quá trình mô phỏng.

    Mô phỏng: Cho L,DL, DL,D (số nguyên, 1≤L≤D≤10001\le L\le D\le 10001≤L≤D≤1000) và số lần thả kim NNN. Ở lần thả thứ iii (i=1,…,Ni=1,\dots,Ni=1,…,N), lấy hai số ngẫu nhiên kế tiếp u2i−1,u2iu_{2i-1}, u_{2i}u2i−1​,u2i​:

    • Khoảng cách từ tâm kim đến vạch gần nhất: xi=u2i−1⋅D2x_i = u_{2i-1} \cdot \dfrac{D}{2}xi​=u2i−1​⋅2D​ (thuộc [0,D/2)[0, D/2)[0,D/2)).
    • Góc giữa kim và các vạch: θi=u2i⋅π2\theta_i = u_{2i} \cdot \dfrac{\pi}{2}θi​=u2i​⋅2π​ (thuộc [0,π/2)[0, \pi/2)[0,π/2)).

    Kim CẮT một vạch nếu xi≤L2sin⁡θix_i \le \dfrac{L}{2}\sin\theta_ixi​≤2L​sinθi​. Gọi CCC là số lần cắt trong NNN lần thả.

    • Nếu C=0C = 0C=0 (không chia được cho 0), in ra undefined.
    • Ngược lại, in ước lượng π^=2LNDC\hat\pi = \dfrac{2LN}{DC}π^=DC2LN​, làm tròn 6 chữ số thập phân.

    Ví dụ: L=1, D=2, N=5, seed=1L=1,\ D=2,\ N=5,\ \text{seed}=1L=1, D=2, N=5, seed=1 → 5.000000.

    • Định dạng đầu vào:

      Một dòng gồm 4 số nguyên L D N seedL\ D\ N\ \text{seed}L D N seed (1≤L≤D≤10001\le L\le D\le 10001≤L≤D≤1000; 0≤N≤2000000\le N\le 2000000≤N≤200000; 0≤seed<2310\le \text{seed}<2^{31}0≤seed<231).

    • Định dạng đầu ra:

      In undefined nếu C=0C=0C=0; ngược lại in π^\hat\piπ^ với đúng 6 chữ số thập phân.

    Ví dụ:

    Đầu vào:

    1 1 0 1

    Đầu ra:

    undefined
    

    Đầu vào:

    1 1 1 1

    Đầu ra:

    undefined
    

    Đang tải editor...