CodeKitHub
Công cụ Tạo dữ liệu

Công cụ tạo chữ cái ngẫu nhiên

Cập nhật lần cuối:

Chọn chữ cái "ngẫu nhiên" bằng tay — nhắm mắt chỉ vào bảng chữ cái, hoặc nhờ bạn bè buột miệng nói ra một chữ — vốn nổi tiếng là không hề công bằng; con người có xu hướng thiên vị một số chữ cái nhất định nhiều hơn hẳn so với xác suất ngẫu nhiên. Công cụ này tạo ra bao nhiêu chữ cái ngẫu nhiên tùy bạn cần, ở dạng viết hoa, viết thường, hoặc trộn lẫn, với tùy chọn không cho phép lặp lại, sử dụng cùng nguồn số ngẫu nhiên an toàn mật mã học (crypto.getRandomValues()) như Công cụ tạo mật khẩu của trang này — không phải Math.random() yếu hơn mà nhiều công cụ tương tự âm thầm sử dụng.

Kết quả

Công Cụ Này Là Gì?

Công cụ tạo chữ cái ngẫu nhiên chọn một hoặc nhiều chữ cái từ bảng chữ cái tiếng Anh gồm 26 chữ sao cho mỗi chữ cái đều có cơ hội được chọn công bằng và không thiên vị mỗi lần. Chất lượng của tính ngẫu nhiên đó hoàn toàn phụ thuộc vào nguồn số ngẫu nhiên đứng sau nó: một cách triển khai đơn giản dùng `Math.random()` của JavaScript là một bộ tạo giả ngẫu nhiên không được thiết kế để chống lại việc dự đoán, trong khi `crypto.getRandomValues()` — được định nghĩa trong W3C Web Cryptography API — được hỗ trợ bởi nguồn ngẫu nhiên an toàn mật mã học của hệ điều hành của bạn.

Công cụ này sử dụng `crypto.getRandomValues()` cho mỗi chữ cái nó tạo ra, cùng cách tiếp cận được dùng bởi [Công cụ tạo mật khẩu](/password-generator/) của trang này — xem [bài so sánh kiểm chứng xem những công cụ phổ biến nào thực sự dùng nguồn ngẫu nhiên an toàn](/blog/online-password-generators-math-random-vs-crypto/) của chúng tôi để hiểu tại sao sự khác biệt này đáng quan tâm ngay cả với việc đơn giản như chọn một chữ cái.

Tùy chọn "không lặp lại" thực hiện một phép xáo trộn kiểu Fisher–Yates trên tập chữ cái khả dụng và rút ra không hoàn lại, đảm bảo mọi chữ cái trong kết quả đều khác biệt — hữu ích cho bất kỳ trường hợp nào mà một chữ cái lặp lại sẽ là vấn đề, như gán các mã một-chữ-cái duy nhất.

Tại Sao Nên Dùng?

  • Chọn chữ cái cho hoạt động lớp học, trò chơi (như trò chơi phá băng bằng chữ cái ngẫu nhiên hoặc trò chơi chữ), hoặc rút thăm một cách công bằng.
  • Tạo các mã định danh hoặc mã một-chữ-cái duy nhất mà không vô tình lặp lại.
  • Nhận một chữ cái ngẫu nhiên thực sự không thiên vị thay vì phụ thuộc vào sở thích chữ cái vô thức của một người.
  • Chọn viết hoa, viết thường, hoặc trộn lẫn tùy theo nhu cầu sử dụng của bạn.
  • 100% cục bộ và ngẫu nhiên mật mã học: mọi thứ chạy trong trình duyệt của bạn bằng crypto.getRandomValues(), và không có gì được gửi đến máy chủ.

Cách Sử Dụng

  1. Đặt số lượng chữ cái bạn muốn (1 đến 100).
  2. Chọn kiểu chữ: viết hoa, viết thường, hoặc trộn lẫn.
  3. Bật "No repeats" nếu bạn cần mọi chữ cái trong kết quả khác nhau với các chữ khác.
  4. Nhấp "Generate" để tạo kết quả, sau đó nhấp "Copy" để sao chép các chữ cái vào clipboard của bạn.

Ví dụ

Đầu vào

Số lượng: 5, Kiểu chữ: Viết hoa, Không lặp lại: bật

Đầu ra

Q, F, B, X, M

Mỗi lần chạy cho ra một kết quả ngẫu nhiên khác nhau — đây chỉ là một ví dụ về kết quả đầu ra với tùy chọn "không lặp lại" được bật, nên cả năm chữ cái đều được đảm bảo khác biệt.

Math.random() so với crypto.getRandomValues() khi chọn chữ cái

Đối với một trò chơi thông thường, sự khác biệt là vô hình. Nhưng với bất kỳ trường hợp nào mà khả năng dự đoán thực sự quan trọng, thì không phải vậy.

Đặc điểmMath.random()crypto.getRandomValues()
Mục tiêu thiết kếTốc độ và phân phối thống kêKhông thể dự đoán, chống lại việc dự đoán
Phù hợp cho mục đích nhạy cảm về bảo mậtKhông — chính tài liệu của MDN nói rõ điều nàyCó — được hỗ trợ bởi CSPRNG của hệ điều hành
Được công cụ này sử dụngKhôngCó, cho mọi chữ cái được tạo

Công cụ liên quan

Để dùng các công cụ tạo ngẫu nhiên khác, hãy thử các công cụ này.

Công cụ tạo số ngẫu nhiên · Công cụ tạo mật khẩu · Công cụ tạo tên giả tưởng

Câu Hỏi Thường Gặp

Đây có thực sự ngẫu nhiên không, hay chỉ là Math.random()?

Nó sử dụng crypto.getRandomValues(), nguồn số ngẫu nhiên an toàn mật mã học của Web Cryptography API được hỗ trợ bởi hệ điều hành của bạn — không phải bộ tạo giả ngẫu nhiên Math.random() yếu hơn mà nhiều công cụ tương tự sử dụng mà không nói rõ. Xem bài so sánh đã kiểm chứng của chúng tôi về những công cụ tạo phổ biến nào thực sự dùng nguồn ngẫu nhiên an toàn để hiểu thêm về lý do điều này quan trọng.

"No repeats" làm gì?

Khi được bật, công cụ rút chữ cái không hoàn lại từ tập khả dụng (26 chữ cho một kiểu chữ, 52 cho trộn lẫn), nên mọi chữ cái trong kết quả được đảm bảo khác với mọi chữ cái khác trong cùng kết quả đó. Khi không bật, mỗi chữ cái được chọn độc lập và có thể lặp lại, giống hệt như tung xúc xắc nhiều lần.

Số lượng chữ cái duy nhất tối đa tôi có thể tạo là bao nhiêu?

26 cho chế độ chỉ viết hoa hoặc chỉ viết thường, hoặc 52 cho trộn lẫn (vì phiên bản viết hoa và viết thường của cùng một chữ cái được tính là kết quả khác nhau). Nếu bạn yêu cầu nhiều hơn thế với "no repeats" bật, số lượng sẽ bị giới hạn ở kích thước tập chữ cái.

Tôi có thể tạo chữ cái trộn lẫn mà cùng một chữ cái xuất hiện cả dạng hoa và thường không?

Có — ở chế độ trộn lẫn với "no repeats" tắt, không có gì ngăn cả "A" và "a" cùng xuất hiện trong một kết quả, vì chúng được tạo độc lập. Với "no repeats" bật và chọn trộn lẫn, chúng được coi là hai mục riêng trong tập chữ cái, nên cả hai vẫn có thể xuất hiện, chỉ là không quá một lần mỗi loại.

Việc sử dụng công cụ này của tôi có bị theo dõi hay gửi đi đâu không?

Không. Mọi việc tạo số ngẫu nhiên diễn ra hoàn toàn phía client trong trình duyệt của bạn bằng Web Cryptography API. Không có gì được tải lên hay ghi lại.

Công Cụ Liên Quan