Abstract
Bài mô tả đường gieo đồng xu và cỏ thi đang có trong thư viện I-Ching Vir: entropy OS mới cho từng lần rút, SHA-256 câu hỏi làm personalization mask, rejection sampling và chuỗi ba biến tạo một hào. Phân phối được suy ra bằng duyệt hữu hạn các khoảng chia thực tế. Mai Hoa và nhập hào được tách khỏi gieo ngẫu nhiên. Phụ lục phân biệt kiểm tra toán học độc lập với việc chạy test native chưa hoàn tất.
1 Phạm vi và nguồn
Đối tượng là các module cast/prng.vri, cast/entropy, cast/coins và cast/yarrow trong manifest ngày 23/10/2026 [1]. Bài kiến trúc QP-SYS-002 đặt chúng trong I-Ching Engine tổng thể. Thuật toán gieo là chức năng dùng chung, không bị đặt riêng dưới NLP hoặc dưới Liuyao.
Các quy tắc dưới đây mô tả mô hình phần mềm. Tỷ lệ hào không chứng minh ý nghĩa dự đoán; băm câu hỏi không chứng minh quan hệ nhân quả giữa câu hỏi và kết quả. Không công bố câu hỏi lịch sử hay mẫu gieo của người dùng.
2 Hai luồng câu hỏi phải phân biệt
2.1 Nhánh entropy
Với câu hỏi không rỗng, castQuestionMask băm chuỗi UTF-8 bằng SHA-256, lấy tám byte đầu theo big-endian và xóa bit dấu. Câu hỏi rỗng được quy ước cho mask bằng 0. Không thấy bước chuẩn hóa Unicode trong hàm này; hai biểu diễn byte khác nhau có thể có mask khác nhau.
CastRng.state lưu mask 63-bit, không phải trạng thái PRNG tiến hóa. castRngNext gọi provider OS mỗi lần; provider trong crypto_entropy_u63_checked yêu cầu bytes(8), ghép thành số nguyên và giữ 63 bit không âm. Output OS mới được XOR với mask:
Với mask cố định, XOR là song ánh, nên giữ tính đồng đều nếu đầu vào OS đồng đều. Mask không tạo thêm entropy, không phải chữ ký, định danh chống va chạm hay hash để xác thực câu hỏi. Việc rút gọn 63-bit không mang toàn bộ tính chất chống va chạm của digest SHA-256.
2.2 Nhánh NLP
NLP đọc nội dung câu hỏi để tạo QueryContext cho scoring và NLG, theo QP-SYS-001. Nhánh này không cấp số ngẫu nhiên cho đồng xu/cỏ thi. Cùng câu hỏi không tái tạo cùng quẻ vì mỗi lần rút vẫn đọc OS mới. Các hàm Xorshift/DJB2 legacy còn trong source để tương thích/kiểm thử; không được dùng chúng để mô tả đường CastRng hiện tại [1].
3 Rút khoảng không thiên lệch modulo
Với khoảng nguyên đóng và , code đặt và:
Rút u mới; nếu thì bỏ và lấy entropy mới. Nếu chấp nhận, trả . Vì [0,L) có đúng số phần tử chia đều cho mỗi lớp dư, kết quả đồng đều khi provider đồng đều.
Code dùng U thay vì để tránh biểu diễn cận trên ngoài số nguyên có dấu. Với vài span, nó bỏ thêm giá trị so với cận tối ưu; điều này giảm hiệu suất nhỏ nhưng không tạo thiên lệch. Nhánh span không lớn hơn 1 trả a ngay. Đây là hành vi hiện có, không phải kiểm tra tổng quát mọi khoảng đảo hoặc tràn số. Các caller gieo hợp lệ dùng khoảng nhỏ đã biết.
Lỗi provider được nâng thành lỗi 601. Trong controller tác giả, nhánh gieo bắt lỗi và trả HTTP 500 trước khi gọi flow dựng/lưu kết quả. Không có fallback dựa trên thời gian hoặc câu hỏi. Số 0 là output hợp lệ, không phải tín hiệu lỗi.
4 Ba đồng xu
cast_one_coin_rng rút bit 0 hoặc 1 rồi ánh xạ sang 2 hoặc 3. cast_coin_line_rng cộng ba lần rút. Với các lần rút độc lập và đồng đều:
Sáu hào cần 18 kết quả rút được chấp nhận; rejection có thể làm tăng số lần đọc entropy. Giá trị 6 là âm động, 7 dương tĩnh, 8 âm tĩnh, 9 dương động. Gieo theo thứ tự hào dưới lên trên. Animation là cách trình bày kết quả đã tính, không phải entropy bổ sung.
5 Cỏ thi: ba biến mỗi hào
5.1 Một bước chuyển trạng thái
Bắt đầu mỗi hào bằng 49 cọng. Chọn bó trái l; bó phải ban đầu là N-l; quải một cọng từ phải nên phần đếm phải còn N-l-1. Với cho x dương:
Hàm yarrow_one_bian_full_rng lưu số cọng trái/phải, dư, số bỏ và số còn. Ba biến liên tiếp cho hào ; thực hiện cho sáu hào thành 18 biến. Bất biến lần đầu là bỏ 5 hoặc 9; hai lần sau bỏ 4 hoặc 8; cuối cùng còn 24,28,32 hoặc 36 cọng.
5.2 Khoảng chia thực tế
Code đang khảo sát không rút mọi điểm chia từ 1 đến N-2 trong các trạng thái chính. Nó chọn các khoảng đóng sau, mỗi khoảng có số phần tử chia hết cho 4:
- Biến 1, N=49: 12..35, gồm 24 điểm chia.
- Biến 2, N=44: 12..31; N=40: 10..29, đều 20 điểm chia.
- Biến 3, N=40: 10..29; N=36: 10..25; N=32: 8..23.
Các khoảng này làm số dư modulo 4 cân bằng. Biến đầu bỏ 5 với tỷ lệ 3/4 và bỏ 9 với tỷ lệ 1/4. Hai biến sau bỏ 4 hoặc 8, mỗi loại 1/2. Suy ra:
Đây là phân phối chính xác của mô hình khoảng chia được cài đặt, dưới giả định rút đồng đều, độc lập. Không dùng nó để kết luận tay người thật có cùng phân phối. Tài liệu cũ mô tả mô hình chia toàn khoảng 1..N-2 với xác suất xấp xỉ 5.17%, 28.87%, 44.84%, 21.12%; mô hình đó không phải các khoảng của source hiện được kiểm tra. Không trộn hai mô hình trong một kết quả.
5.3 Khác biệt với đồng xu
Cỏ thi có xác suất hào động 6 là 1/16 và hào động 9 là 3/16; đồng xu cho cả hai là 1/8. Xác suất có động của từng hào đều là 1/4 trong hai mô hình, nhưng loại động và hào tĩnh phân bố khác nhau. Hai phương pháp không thể thay thế cho nhau chỉ vì cùng trả giá trị 6..9.
6 Mai Hoa, nhập hào và phép biến
Mai Hoa theo thời gian đọc ngữ cảnh từ calendar SDK: chi năm, tháng/ngày âm và chi giờ theo quy ước lịch. Các phép chia dư 8 và 6 xác định quái và hào động; số dư 0 được đổi thành 8 hoặc 6. Cách này có tính xác định theo đầu vào lịch; không được gọi là rút CSPRNG. Nhánh Mai Hoa theo số tồn tại trong thư viện, không vì vậy mà mặc định mọi nhánh đều được HTTP cung cấp.
Nhập hào yêu cầu sáu giá trị nguyên 6..9 ở controller. Nó biểu diễn kết quả do người gọi cung cấp; không chứng nhận nguồn ngẫu nhiên bên ngoài. Sau khi có sáu hào, core dựng Bản/Biến/Hỗ theo QP-SYS-002, trước khi các nhánh trường phái, Yingqi và NLP/NLG diễn giải.
7 Vector và khả năng tái lập
Phụ lục chứa vector SHA-256 ASCII, UTF-8, biên padding 56/64 byte, kiểm tra dư và ví dụ cỏ thi. Verifier dùng số hữu tỷ để duyệt toàn bộ cây chia hữu hạn và xác nhận (1,5,7,3)/16; duyệt 8 tổ hợp đồng xu để xác nhận (1,3,3,1)/8 [2]. Phép hoán vị XOR và rejection được kiểm tra trên miền thu nhỏ 8-bit, kèm chứng minh tổng quát ở mục 2–3.
Các vector chỉ dùng câu minh họa công khai. Script không gọi API gieo production, không cần corpus riêng tư và không tạo lịch sử người dùng. Kiểm tra toán học không phải kiểm thử trực tiếp chất lượng OS CSPRNG.
8 Giới hạn kiểm chứng
Test native test_cast_csprng.vri có các nhánh provider đếm, lỗi và rejection, nhưng lần biên dịch thử bằng virc 2026.2.20 không qua semantic analysis. Bài chỉ công bố kết quả verifier Python và khảo sát nguồn, không nhận kết quả native đạt. Các test fault-injection HTTP có trong cây tác giả chưa được chạy lại trong công bố này.
Checksum nguồn không chứng minh khả năng tái build binary đang chạy. Giả định OS cung cấp entropy an toàn phụ thuộc hệ điều hành và runtime; kiểm tra phân phối không chứng minh an toàn mật mã. Xác suất hào và nhãn confidence của ứng kỳ/scoring không phải xác suất ứng nghiệm.
9 Kết luận
Đường đồng xu/cỏ thi dùng entropy mới theo từng lần rút và rejection sampling. Câu hỏi cung cấp personalization mask, không làm seed cho chuỗi Xorshift. Cỏ thi thực thi ba biến với các khoảng chia cân bằng và có phân phối riêng; Mai Hoa và nhập hào là phương thức khác. Mô tả đầy đủ cần công bố cả thuật toán, giả định, vector và phạm vi kiểm chứng.
Bibliography
- [1] Source manifest và checksum thuật toán I-Ching Vir.
- [2] Vector tổng hợp, chương trình xác suất hữu tỷ và biên bản kiểm tra.
Tài liệu tham khảo (Hồ sơ ISO 690)
- [1] Quizzman Research & Engineering Team. I-Ching Vir inspected source manifest, 23 October 2026. 2026. [URL] (Author-run evidence; AI-assisted writing and translations; not independent certification.)
- [2] Quizzman Research & Engineering Team. Independent mathematical model verification and native test limitation. 2026. [URL] (Author-run evidence; AI-assisted writing and translations; not independent certification.)