Sai lầm của người đánh bạc là một khuynh hướng nhận thức, trong đó chúng ta nhầm tưởng những điều xảy ra thường ít xảy ra trong tương lai và những điều không xảy ra trong một thời gian sẽ sớm xảy ra. Nhiệm vụ của bạn là thực hiện một phiên bản cụ thể của việc này.
Giải thích thách thức
Viết hàm trả về một số nguyên ngẫu nhiên trong khoảng từ 1 đến 6. Bắt: lần đầu tiên chức năng được chạy, kết quả phải đồng nhất (trong vòng 1%), tuy nhiên, mỗi cuộc gọi tiếp theo sẽ bị sai lệch có lợi cho các giá trị đã được cuộn ít lần trước đó. Các chi tiết cụ thể như sau:
- Chết nhớ số lượng tạo ra cho đến nay.
- Mỗi kết quả được tính theo công thức sau:
- Chẳng hạn, nếu số lượng cuộn cho đến nay là , các trọng số sẽ là , nghĩa là bạn sẽ 4 lần nhiều khả năng cuộn hơn .
- Lưu ý rằng công thức có nghĩa là kết quả cuộn của có trọng số tương đương với
Quy tắc và giả định
- Quy tắc I / O tiêu chuẩn và sơ hở bị cấm áp dụng
- Die cuộn không nên được xác định. (tức là sử dụng PRNG được gieo từ nguồn dễ bay hơi, như thường có sẵn dưới dạng dựng sẵn.)
- Nguồn ngẫu nhiên của bạn phải có khoảng thời gian ít nhất là 65535 hoặc là ngẫu nhiên thực sự.
- Phân phối phải trong vòng 1% cho trọng lượng lên tới 255
- RNG 16 bit đủ tốt để đáp ứng cả hai yêu cầu trên. Hầu hết các RNG tích hợp là đủ.
- Bạn có thể vượt qua trong phân phối hiện tại miễn là phân phối đó bị đột biến bởi lệnh gọi hoặc phân phối sau cuộn được trả lại cùng với trục lăn. Cập nhật phân phối / số lượng là một phần của thách thức này .
- Bạn có thể sử dụng trọng lượng thay vì đếm. Khi làm như vậy, bất cứ khi nào trọng lượng giảm xuống 0, tất cả các trọng số sẽ tăng thêm 1 để đạt được hiệu quả tương tự như số lượng lưu trữ.
- Bạn có thể sử dụng các trọng số này như sự lặp lại của các phần tử trong một mảng.
Chúc may mắn. Có thể các byte được bao giờ có lợi cho bạn.