Giới thiệu về bộ
Trước hết, bạn có thể coi điều này giống như bất kỳ thử thách chơi gôn mã nào khác, và trả lời nó mà không phải lo lắng về loạt bài này. Tuy nhiên, có một bảng xếp hạng trên tất cả các thách thức. Bạn có thể tìm thấy bảng xếp hạng cùng với một số thông tin khác về loạt bài trong bài đầu tiên .
Mặc dù tôi có một loạt các ý tưởng được xếp hàng cho loạt bài này, những thách thức trong tương lai vẫn chưa được đặt ra. Nếu bạn có bất kỳ đề xuất nào, xin vui lòng cho tôi biết trên bài đăng hộp cát có liên quan .
Lỗ 2: Số từ phân phối chuẩn
Tôi không thể tin rằng điều này chưa được thực hiện! Bạn đang tạo số ngẫu nhiên, rút ra từ một phân phối bình thường . Một số quy tắc (phần lớn trong số chúng có thể được tự động bao phủ bởi hầu hết các lần gửi, nhưng một số trong số chúng được áp dụng để đảm bảo tính thống nhất của kết quả giữa các ngôn ngữ khác nhau):
Bạn nên lấy hai số nguyên không âm làm đầu vào : một hạt giống
S
và sốN
lượng để trả về. Đầu ra phải là một danh sách các sốN
dấu phẩy động, được rút ra từ một phân phối bình thường với giá trị trung bình 0 và phương sai 1 . Bất cứ khi nào trình của bạn được đưa ra cùng một hạt giống,S
nó sẽ tạo ra cùng một số. Cụ thể, nếu nó được gọi một lần với và một lần với , các mục đầu tiên của hai đầu ra phải giống hệt nhau. Ngoài ra, ít nhất 2 16 giá trị khác nhau sẽ tạo ra các chuỗi khác nhau.(S, N1)
(S, N2)
min(N1, N2)
S
Bạn có thể sử dụng bất kỳ trình tạo số ngẫu nhiên tích hợp nào được ghi lại để rút số từ phân phối thống nhất (xấp xỉ) , miễn là bạn có thể chuyển
S
sang nó và nó hỗ trợ ít nhất 2 16 hạt khác nhau. Nếu bạn làm như vậy, RNG sẽ có thể trả về ít nhất 2 20 giá trị khác nhau cho bất kỳ số nào bạn yêu cầu từ nó.- Nếu thống nhất RNG có sẵn của bạn có một phạm vi nhỏ hơn, không phải là seedable, hoặc hỗ trợ quá ít hạt giống, bạn phải đầu tiên xây dựng một RNG thống nhất với một loạt đủ lớn trên đỉnh được xây dựng trong một hoặc bạn phải thực hiện của riêng bạn RNG phù hợp sử dụng hạt giống. Trang này có thể hữu ích cho việc đó.
- Nếu bạn không triển khai thuật toán đã thiết lập để tạo phân phối bình thường, vui lòng bao gồm bằng chứng về tính chính xác. Trong cả hai trường hợp, thuật toán bạn chọn phải mang lại phân phối chuẩn chính xác về mặt lý thuyết (hạn chế các loại dữ liệu PRNG cơ bản hoặc giới hạn chính xác).
- Việc triển khai của bạn nên sử dụng và trả về các số có dấu phẩy động (rộng tối thiểu 32 bit) hoặc các số điểm cố định (rộng tối thiểu 24 bit) và tất cả các phép toán số học nên sử dụng toàn bộ chiều rộng của loại đã chọn.
- Bạn không được sử dụng bất kỳ hàm dựng sẵn nào liên quan trực tiếp đến phân phối bình thường hoặc tích phân Gaussian, như hàm Error hoặc nghịch đảo của nó.
Bạn có thể viết một chương trình đầy đủ hoặc một hàm và nhận đầu vào thông qua STDIN, đối số dòng lệnh, đối số chức năng hoặc lời nhắc và tạo đầu ra thông qua giá trị trả về hoặc bằng cách in ra STDOUT (hoặc thay thế gần nhất).
S
và N
sẽ là các số nguyên không âm, mỗi số nhỏ hơn 2 20 . Đầu ra có thể ở bất kỳ định dạng chuỗi hoặc danh sách thuận tiện, rõ ràng.
Đây là mã golf, vì vậy bài nộp ngắn nhất (tính bằng byte) sẽ thắng. Và tất nhiên, lần gửi ngắn nhất cho mỗi người dùng cũng sẽ tham gia vào bảng xếp hạng tổng thể của loạt bài.
Bảng xếp hạng
Bài đầu tiên của loạt bài tạo ra một bảng thành tích.
Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu mọi câu trả lời bằng tiêu đề, sử dụng mẫu Markdown sau:
# Language Name, N bytes
nơi N
là kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Ngôn ngữ hiện không được hiển thị, nhưng đoạn mã yêu cầu và phân tích cú pháp, và tôi có thể thêm bảng xếp hạng ngôn ngữ trong tương lai.)