Giới thiệu
Bạn được cung cấp một trình tạo số nguyên ngẫu nhiên với cách thực hiện sau
- Lời gọi đầu tiên luôn trả về 1.
- Lệnh thứ hai trả về một số nguyên ngẫu nhiên trong khoảng từ 1 đến 2.
- Lệnh thứ ba trả về một số nguyên ngẫu nhiên trong khoảng từ 1 đến 3.
- Lệnh thứ n trả về một số nguyên ngẫu nhiên trong khoảng từ 1 đến n, đã bao gồm.
Dựa vào hàm trên, hãy viết một bộ tạo xúc xắc ngẫu nhiên hoàn toàn ngẫu nhiên, trả về giá trị từ 1 đến 6 (đã bao gồm) với xác suất bằng nhau.
Quy tắc
- Chương trình / hàm của bạn sẽ dẫn đến một số nguyên ngẫu nhiên trong khoảng từ 1 đến 6, bao gồm, ở một số dạng có thể sử dụng, nghĩa là, cho đầu ra tiêu chuẩn hoặc dưới dạng giá trị trả về của hàm.
- Trình tạo số ngẫu nhiên tăng dần ở trên có thể được định nghĩa là hàm "miễn phí" trong chương trình của bạn (nghĩa là không tính vào số ký tự của bạn) hoặc một tập lệnh / chương trình riêng được thực thi khi cần, giả sử trạng thái (
n
) vẫn tồn tại giữa các cuộc gọi. - Giả sử rằng sẽ không yêu cầu quá 1000 cuộn xúc xắc trong một trường hợp sử dụng duy nhất của chương trình của bạn và trình tạo số ngẫu nhiên ban đầu có thể được đặt lại
1
ở cuối 1000 cuộn xúc xắc để tránh trànn
. - Chương trình của bạn không được sử dụng bất kỳ nguồn số ngẫu nhiên nào khác ngoại trừ trình tạo ngẫu nhiên tăng dần được xác định ở trên. Tất nhiên bạn có thể yêu cầu nhiều số ngẫu nhiên từ trình tạo số ngẫu nhiên cho mỗi đầu ra cuộn xúc xắc duy nhất.
- Đây là môn đánh gôn, vì vậy người chiến thắng là câu trả lời ngắn nhất hoặc hầu hết phiếu bầu trong trường hợp hòa. Nếu bạn có thể tạo 1000 cuộn xúc xắc bằng cách sử dụng ít hơn 1000 số ngẫu nhiên được tạo, hãy tạo cho mình phần thưởng hiệu quả 10 điểm .
Thí dụ
./asc-rand
1 # random integer between 1 and 1
./asc-rand
1 # random integer between 1 and 2
./asc-rand
3 # random integer between 1 and 3
./asc-rand
4 # random integer between 1 and 4
# dice-gen generates random dice based on output of asc-rand program.
./dice-gen
3
./dice-gen
6
./dice-gen
5
./dice-gen
1
iterate(6):b=asc-rand(); print b
bất hợp pháp hoặc nó không hoạt động? Tôi có thể hiểu sai quy tắc thứ ba.