# Tạo số ngẫu nhiên

> Công cụ tạo số ngẫu nhiên miễn phí: chế độ an toàn hoặc seed tái lập, 6 phân phối, trọng số, ký hiệu xúc xắc, thống kê trực tiếp. 100% trong trình duyệt.

URL: https://acrafto.com/vi/cong-cu-tao-so-ngau-nhien/  
Updated: 2026-08-28

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

## Công cụ tạo số ngẫu nhiên hoạt động như thế nào?

Công cụ này cung cấp cho bạn **hai nguồn ngẫu nhiên**, và bạn chọn nguồn phù hợp với mục đích của mình.

**Ngẫu nhiên an toàn** lấy entropy từ hệ điều hành của bạn thông qua Web Crypto API (`crypto.getRandomValues()`). Nó không thể đoán trước và không thể lặp lại — lựa chọn đúng đắn cho một lần quay số thực sự, nơi không ai có thể đoán trước kết quả.

**Seed (hạt giống)** biến bất kỳ đoạn văn bản nào bạn nhập thành trạng thái khởi đầu cho một bộ tạo số xác định (xoshiro128\*\*). Cùng một seed luôn cho ra cùng một dãy số, vì vậy bất kỳ ai cũng có thể lặp lại lần quay số của bạn và xác nhận rằng bạn đã nhận được đúng như những gì bạn nói.

Cả hai chế độ đều chạy **hoàn toàn trong trình duyệt của bạn**. Không có số nào từng được gửi tới máy chủ.

### Không có sai lệch modulo

Hầu hết các bộ tạo số đơn giản ánh xạ một giá trị 32-bit ngẫu nhiên vào phạm vi của bạn bằng `value % range`. Khi phạm vi không chia hết đều cho 2³², các số nhỏ nhất sẽ xuất hiện thường xuyên hơn một chút so với phần còn lại. Qua hàng nghìn lần quay, điều này trở nên đo lường được.

Công cụ này sử dụng **lấy mẫu loại bỏ (rejection sampling)** thay thế: những giá trị rơi vào phần đuôi không đều sẽ bị loại bỏ và rút lại. Mọi số trong phạm vi của bạn đều có cơ hội hoàn toàn như nhau. Bạn có thể tự kiểm chứng điều này bằng bài kiểm tra độ đồng đều tích hợp sẵn.

## Công cụ này có thể làm gì

### Phạm vi

- **Tối thiểu và tối đa** — bất kỳ phạm vi số nguyên hay số thập phân nào, kể cả giá trị âm
- **Số lượng số** — từ 1 đến **1.000.000** trong một lần tạo
- **Không lặp lại** — mỗi số chỉ xuất hiện tối đa một lần, giống như một lần quay số thực sự
- **Sắp xếp** — theo thứ tự quay, tăng dần hoặc giảm dần; việc sắp xếp không hề ảnh hưởng đến tính ngẫu nhiên
- **Bước nhảy (step)** — giới hạn kết quả chỉ là bội số của một giá trị, ví dụ chỉ ra 0, 5, 10, 15
- **Loại trừ số** — liệt kê các giá trị không bao giờ được rút ra

### Chế độ

- **Nguồn ngẫu nhiên** — an toàn (Web Crypto) hoặc seed (có thể tái lập)
- **Seed** — bất kỳ văn bản nào; cùng một seed luôn phát lại đúng lần quay đó
- **Phân phối** — đều, chuẩn (Gaussian), mũ, Poisson, tam giác, nhị thức
- **Trọng số** — cho các số được chọn cơ hội cao hơn, viết theo dạng `number:weight`
- **Ký hiệu xúc xắc** — `3d6+2`, `d20`, `2d20kh1` cho lợi thế (advantage), `4d6dl1` cho việc lăn chỉ số nhân vật

### Đầu ra

- **Dấu phân cách** — dấu phẩy, dấu cách, dấu chấm phẩy, tab, xuống dòng, hoặc bất kỳ ký tự nào bạn nhập
- **Hệ số** — thập phân, nhị phân, bát phân, thập lục phân, hoặc cơ số 36
- **Đệm số 0** — biến 7 thành 007 cho số vé hoặc mã ID
- **Tiền tố và hậu tố** — bọc mỗi số trong đoạn văn bản cố định
- **Mẫu (template)** — `{n}` là số, `{i}` là vị trí của nó, vì vậy `user{n}` trở thành `user42`
- **Sao chép dưới dạng** — văn bản thuần, CSV, JSON, hoặc bảng Markdown

### Thống kê

Mỗi lần tạo đều được tóm tắt trực tiếp: tổng, trung bình, trung vị, nhỏ nhất, lớn nhất, độ lệch chuẩn, cùng với số lượng kết quả chẵn, lẻ hoặc số nguyên tố. Biểu đồ histogram cho thấy hình dạng của phân phối, và một **kiểm định chi bình phương (chi-square)** cho biết liệu kết quả có thực sự khớp với phân phối đều hay không.

### Lịch sử

50 lần tạo gần nhất được lưu trong trình duyệt của bạn, cùng với các cài đặt đã tạo ra chúng — chỉ cần một cú nhấp chuột để khôi phục bất kỳ lần nào trong số đó. Các cấu hình bạn dùng thường xuyên có thể được lưu thành preset có tên, và toàn bộ danh sách có thể xuất ra tệp JSON để nhập lại trên máy khác. Không có gì được lưu trữ ở nơi nào khác ngoài trình duyệt này.

### Bàn phím

Nhấn **phím cách (Space)** hoặc **R** để tạo lại mà không cần chạm chuột.

## Các preset nhanh

| Preset | Phạm vi | Số lượng | Ứng dụng |
| --- | --- | --- | --- |
| 🎲 Xúc xắc | 1–6 | 1 | Trò chơi cờ bàn, ra quyết định |
| 🪙 Đồng xu | 0–1 | 1 | Ngửa hoặc sấp |
| 🎰 Xổ số | 1–49 | 6 | Duy nhất, có sắp xếp, giống một lần quay số thực |
| 💯 1–100 | 1–100 | 1 | Phần trăm, chia A/B |
| 🔢 Mã PIN | 0–9 | 4 | Bốn chữ số, cho phép lặp lại |

## Các lần quay có thể tái lập

Chế độ seed tồn tại cho những lúc mà “hãy tin tôi, nó ngẫu nhiên thật” là chưa đủ.

Chọn một seed mà mọi người có thể thống nhất trước — một ngày tháng, một hashtag, giá đóng cửa của thứ gì đó công khai — và công bố nó trước khi quay số. Sau đó bất kỳ ai cũng có thể nhập cùng một seed với cùng cài đặt và nhận được kết quả giống hệt. Bạn không chứng minh rằng các số là không thể đoán trước; bạn chứng minh rằng bạn đã không quay lại nhiều lần cho đến khi thích kết quả.

Đây cũng là cách để làm cho tính ngẫu nhiên trở nên lặp lại được trong công việc cần được kiểm tra: một kế hoạch lấy mẫu mà đồng nghiệp có thể chạy lại, một bộ dữ liệu kiểm thử (fixture) giữ nguyên ổn định trong suốt một bộ test, một bài tập trên lớp nơi mỗi học sinh nhận được cùng một bộ dữ liệu “ngẫu nhiên”.

## Chọn một phân phối

**Đều (Uniform)** cho mọi số trong phạm vi cùng một cơ hội. Đây là điều mà người ta thường nghĩ đến khi nói “ngẫu nhiên”, và đây là lựa chọn mặc định.

Các phân phối khác tập trung kết quả quanh một giá trị, giống như cách các đại lượng trong thực tế thường có xu hướng:

- **Chuẩn (Gaussian)** — chiều cao, sai số đo lường, điểm kiểm tra. Đặt một giá trị trung bình và độ lệch chuẩn.
- **Mũ (Exponential)** — thời gian chờ giữa các sự kiện độc lập.
- **Poisson** — số lượng sự kiện trong một khoảng thời gian cố định: lượt khách đến mỗi giờ, số lỗi mỗi lô hàng.
- **Tam giác (Triangular)** — khi bạn biết giá trị tối thiểu, tối đa và giá trị có khả năng xảy ra nhất nhưng không biết gì thêm. Thường dùng trong ước tính dự án.
- **Nhị thức (Binomial)** — số lần thành công trên một số lượng phép thử cố định với xác suất cố định.

Mọi phân phối đều bị giới hạn (clip) trong phạm vi bạn đặt, vì vậy một đuôi phân phối Gaussian dài không thể vượt ra ngoài giá trị tối thiểu và tối đa của bạn.

## Số ngẫu nhiên được sử dụng ở đâu

### Trò chơi và giải trí

- **Trò chơi cờ bàn** — tung xúc xắc, xác định thứ tự chơi
- **Trò chơi nhập vai (RPG) trên bàn** — `4d6dl1` cho chỉ số nhân vật, `2d20kh1` cho lợi thế
- **Chương trình tặng quà (giveaway)** — chọn người thắng, kèm seed để người tham gia có thể kiểm chứng
- **Câu đố** — sắp xếp thứ tự câu hỏi ngẫu nhiên

### Thống kê và khoa học

- **Lấy mẫu** — rút một mẫu từ quần thể mà không lặp lại
- **Kiểm thử A/B** — phân bổ người tham gia vào các nhóm
- **Mô phỏng Monte Carlo** — ước tính xác suất qua việc lặp lại
- **Bootstrapping** — lấy mẫu lại để ước tính độ bất định

### Phát triển phần mềm

- **Dữ liệu kiểm thử** — hàng triệu giá trị, được tạo ở chế độ nền để trang vẫn phản hồi mượt
- **Fixtures** — dùng seed, để một bài test thất bại thì thất bại giống hệt nhau hai lần
- **ID ngẫu nhiên** — kèm đệm số, tiền tố, hoặc mẫu (template)
- **Kiểm thử tải (load testing)** — định danh theo mẫu như `user{n}@example.com`

## Số ngẫu nhiên thực sự so với số giả ngẫu nhiên

|  | `Math.random()` | `crypto.getRandomValues()` | Seed (xoshiro128\*\*) |
| --- | --- | --- | --- |
| **Loại** | Giả ngẫu nhiên | An toàn về mặt mật mã | Giả ngẫu nhiên, xác định |
| **Nguồn entropy** | Hạt giống do engine chọn | CSPRNG của hệ thống | Văn bản seed của bạn |
| **Có thể dự đoán?** | Có thể | Không | Có, theo thiết kế |
| **Có thể lặp lại?** | Không | Không | Luôn luôn |
| **Phù hợp cho bảo mật** | Không | Có | Không |
| **Phù hợp cho thống kê** | Tùy trường hợp | Có | Có |
| **Phù hợp cho quay số có thể kiểm chứng** | Không | Không | Có |

`Math.random()` không được sử dụng ở bất kỳ đâu trong công cụ này.

## Quay số không lặp lại

Khi bật **Không lặp lại**, mỗi số trong phạm vi chỉ xuất hiện tối đa một lần. Lý tưởng cho:

- **Chương trình tặng quà** — không ai có thể thắng hai lần
- **Hoán vị** — xáo trộn một tập hợp phần tử
- **Bingo** — gọi các số đã được gọi thì không gọi lại
- **Xổ số** — sáu số khác nhau từ 1 đến 49

Việc quay số sử dụng thuật toán xáo trộn Fisher–Yates một phần, vì vậy yêu cầu 6 số duy nhất trong một triệu cũng nhanh như yêu cầu 6 số trong 49 — nó không bao giờ lặp vòng để tránh trùng lặp. Nếu bạn yêu cầu nhiều số duy nhất hơn số lượng mà phạm vi có thể cung cấp, công cụ sẽ báo cho bạn biết thay vì bị treo.

## Xuất kết quả

Sao chép các số dưới dạng văn bản thuần với bất kỳ dấu phân cách nào bạn muốn, dưới dạng **CSV** cho bảng tính, dưới dạng **JSON** cho mã nguồn, hoặc dưới dạng **bảng Markdown** cho tài liệu. Các lần tạo rất lớn được giữ nguyên đầy đủ trong bộ nhớ và sao chép đầy đủ, dù chỉ vài nghìn số đầu tiên được hiển thị trên màn hình.

## Tạo số ngẫu nhiên trong mã nguồn của riêng bạn

### JavaScript / TypeScript

```
// Số nguyên an toàn về mặt mật mã trong [min, max], không bị sai lệch modulo.
// Công thức đơn giản `value % range` sẽ ưu ái các số nhỏ khi range không
// chia hết đều cho 2**32 - vì vậy ta loại bỏ các giá trị rơi vào phần đuôi không đều.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}
```

### Python

```
import random
import secrets

# An toàn về mặt mật mã, không bị sai lệch modulo
n = secrets.randbelow(max - min + 1) + min

# Có thể tái lập: cùng một seed luôn cho cùng một dãy số
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Không lặp lại
sample = random.sample(range(min, max + 1), count)
```

### PHP

```
// An toàn về mặt mật mã (PHP 7+), không bị sai lệch modulo
$n = random_int($min, $max);

// Có thể tái lập
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);
```

## Câu hỏi thường gặp (FAQ)

### Kết quả có thực sự ngẫu nhiên không?

Ở chế độ an toàn thì có. Nó đến từ `crypto.getRandomValues()`, một bộ tạo số an toàn về mặt mật mã được cấp entropy từ nguồn của hệ điều hành. Kết quả được phân bố đều và không thể đoán trước. Chế độ seed cố tình mang tính chất ngược lại: nó có thể tái lập, và đó chính là mục đích của nó.

### Tôi có thể tạo bao nhiêu số cùng một lúc?

Tối đa 1.000.000 số. Các lần tạo trên 50.000 số được tính toán trong một worker chạy nền để trang vẫn phản hồi mượt, và màn hình hiển thị 2.000 số đầu tiên cùng số lượng còn lại — việc sao chép vẫn cho bạn toàn bộ kết quả.

### Tôi có thể tạo số âm không?

Có. Chỉ cần đặt giá trị tối thiểu là số âm. Toàn bộ phạm vi số của JavaScript đều hoạt động được, kể cả phạm vi âm ở cả hai đầu.

### Việc sắp xếp có ảnh hưởng đến tính ngẫu nhiên không?

Không. Các số được rút ra trước rồi mới sắp xếp sau. Việc sắp xếp chỉ thay đổi thứ tự bạn nhìn thấy chúng.

### Cùng một seed có cho cùng một dãy số vào ngày mai không?

Có, và trên bất kỳ thiết bị hay trình duyệt nào khác. Bộ tạo số theo seed hoàn toàn xác định và chỉ phụ thuộc vào seed cùng các cài đặt của bạn.

### Bài kiểm tra độ đồng đều cho tôi biết điều gì?

Nó chạy một kiểm định chi bình phương so sánh tần suất mỗi số thực sự xuất hiện với tần suất lẽ ra nó phải xuất hiện. Nếu giá trị thống kê thấp hơn giá trị tới hạn, kết quả phù hợp với một phân phối đều. Cần một phạm vi tương đối hẹp và đủ số lần tạo — ít nhất năm lần cho mỗi giá trị có thể — để đưa ra kết luận có ý nghĩa.

### Trọng số hoạt động như thế nào?

Viết chúng theo dạng cặp `number:weight`, ví dụ `1:5, 2:1, 3:1`. Ở đây số 1 có khả năng xuất hiện gấp năm lần so với 2 hoặc 3. Những số bạn không liệt kê sẽ có trọng số bằng 0 và không bao giờ được rút ra.

### Những ký hiệu xúc xắc nào được hỗ trợ?

`3d6` tung ba viên xúc xắc sáu mặt. Thêm một số điều chỉnh với `3d6+2`. Giữ lại hoặc loại bỏ xúc xắc với `kh`, `kl`, `dh`, `dl` — vì vậy `2d20kh1` giữ lại giá trị cao nhất trong hai lần tung d20 (lợi thế) và `4d6dl1` loại bỏ giá trị thấp nhất trong bốn lần tung d6.

### Lịch sử của tôi có được lưu trữ ở đâu không?

Chỉ trong trình duyệt này, ở bộ nhớ cục bộ (local storage). Nó không bao giờ được gửi tới máy chủ, không đồng bộ sang thiết bị khác, và sẽ biến mất nếu bạn xóa dữ liệu trang web. Xuất ra JSON nếu bạn muốn giữ lại hoặc di chuyển nó.

## Other languages

- Čeština (cs): [Generátor náhodných čísel](https://acrafto.com/cs/generator-nahodnych-cisel/) ([Markdown](https://acrafto.com/cs/generator-nahodnych-cisel/index.md))
- Slovenčina (sk): [Generátor náhodných čísel](https://acrafto.com/sk/generator-nahodnych-cisel/) ([Markdown](https://acrafto.com/sk/generator-nahodnych-cisel/index.md))
- English (en): [Random Number Generator](https://acrafto.com/en/online-random-number-generator/) ([Markdown](https://acrafto.com/en/online-random-number-generator/index.md))
- Deutsch (de): [Zufallszahlen Generator](https://acrafto.com/de/zufallszahlen-generator-online/) ([Markdown](https://acrafto.com/de/zufallszahlen-generator-online/index.md))
- Français (fr): [Générateur de nombres aléatoires](https://acrafto.com/fr/generateur-nombres-aleatoires/) ([Markdown](https://acrafto.com/fr/generateur-nombres-aleatoires/index.md))
- Español (es): [Generador de números aleatorios](https://acrafto.com/es/generador-numeros-aleatorios-online/) ([Markdown](https://acrafto.com/es/generador-numeros-aleatorios-online/index.md))
- Italiano (it): [Generatore di numeri casuali](https://acrafto.com/it/generatore-numeri-casuali/) ([Markdown](https://acrafto.com/it/generatore-numeri-casuali/index.md))
- Português (pt): [Gerador de números aleatórios](https://acrafto.com/pt/gerador-numeros-aleatorios/) ([Markdown](https://acrafto.com/pt/gerador-numeros-aleatorios/index.md))
- Nederlands (nl): [Random getal generator](https://acrafto.com/nl/generator-willekeurige-getallen/) ([Markdown](https://acrafto.com/nl/generator-willekeurige-getallen/index.md))
- Polski (pl): [Generator liczb losowych](https://acrafto.com/pl/generator-liczb-losowych-online/) ([Markdown](https://acrafto.com/pl/generator-liczb-losowych-online/index.md))
- Română (ro): [Generator numere aleatoare](https://acrafto.com/ro/generator-numere-aleatoare-online/) ([Markdown](https://acrafto.com/ro/generator-numere-aleatoare-online/index.md))
- Magyar (hu): [Véletlenszám generátor](https://acrafto.com/hu/veletlen-szam-generator/) ([Markdown](https://acrafto.com/hu/veletlen-szam-generator/index.md))
- Ελληνικά (el): [Γεννήτρια τυχαίων αριθμών](https://acrafto.com/el/generator-tychaion-arithmon-online/) ([Markdown](https://acrafto.com/el/generator-tychaion-arithmon-online/index.md))
- Български (bg): [Генератор на случайни числа](https://acrafto.com/bg/generator-sluchayni-chisla/) ([Markdown](https://acrafto.com/bg/generator-sluchayni-chisla/index.md))
- Hrvatski (hr): [Generator slučajnih brojeva](https://acrafto.com/hr/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/hr/generator-nasumicnih-brojeva/index.md))
- Slovenščina (sl): [Generator naključnih števil](https://acrafto.com/sl/generator-nakljucnih-stevil/) ([Markdown](https://acrafto.com/sl/generator-nakljucnih-stevil/index.md))
- Eesti (et): [Juhuslike arvude generaator](https://acrafto.com/et/juhuslike-arvude-generaator/) ([Markdown](https://acrafto.com/et/juhuslike-arvude-generaator/index.md))
- Latviešu (lv): [Gadījuma skaitļu ģenerators](https://acrafto.com/lv/gadijuma-skaitlu-generators/) ([Markdown](https://acrafto.com/lv/gadijuma-skaitlu-generators/index.md))
- Lietuvių (lt): [Atsitiktinių skaičių generatorius](https://acrafto.com/lt/atsitiktiniu-skaiciu-generatorius/) ([Markdown](https://acrafto.com/lt/atsitiktiniu-skaiciu-generatorius/index.md))
- Svenska (sv): [Slumptalsgenerator](https://acrafto.com/sv/slumptalsgenerator/) ([Markdown](https://acrafto.com/sv/slumptalsgenerator/index.md))
- Dansk (da): [Tilfældighedsgenerator](https://acrafto.com/da/tilfaeldighedsgenerator-online/) ([Markdown](https://acrafto.com/da/tilfaeldighedsgenerator-online/index.md))
- Suomi (fi): [Satunnaislukugeneraattori](https://acrafto.com/fi/satunnaislukugeneraattori/) ([Markdown](https://acrafto.com/fi/satunnaislukugeneraattori/index.md))
- Norsk (no): [Tilfeldig tallgenerator](https://acrafto.com/no/tilfeldig-tallgenerator/) ([Markdown](https://acrafto.com/no/tilfeldig-tallgenerator/index.md))
- Українська (uk): [Генератор випадкових чисел](https://acrafto.com/uk/generator-vypadkovyh-chysel/) ([Markdown](https://acrafto.com/uk/generator-vypadkovyh-chysel/index.md))
- Русский (ru): [Генератор случайных чисел](https://acrafto.com/ru/generator-sluchajnyh-chisel/) ([Markdown](https://acrafto.com/ru/generator-sluchajnyh-chisel/index.md))
- Српски (sr): [Generator nasumičnih brojeva](https://acrafto.com/sr/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/sr/generator-nasumicnih-brojeva/index.md))
- Македонски (mk): [Генератор на случајни броеви](https://acrafto.com/mk/generator-slucajni-broevi/) ([Markdown](https://acrafto.com/mk/generator-slucajni-broevi/index.md))
- Bosanski (bs): [Generator nasumičnih brojeva](https://acrafto.com/bs/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/bs/generator-nasumicnih-brojeva/index.md))
- Shqip (sq): [Gjenerator numrash të rastësishëm](https://acrafto.com/sq/gjenerator-numrash-rastesishem/) ([Markdown](https://acrafto.com/sq/gjenerator-numrash-rastesishem/index.md))
- Türkçe (tr): [Rastgele sayı üretici](https://acrafto.com/tr/rastgele-sayi-uretici/) ([Markdown](https://acrafto.com/tr/rastgele-sayi-uretici/index.md))
- 日本語 (ja): [乱数生成ツール](https://acrafto.com/ja/ransu-generator/) ([Markdown](https://acrafto.com/ja/ransu-generator/index.md))
- 한국어 (ko): [랜덤 숫자 생성기](https://acrafto.com/ko/random-number-generator/) ([Markdown](https://acrafto.com/ko/random-number-generator/index.md))
- العربية (ar): [مولد أرقام عشوائية](https://acrafto.com/ar/random-number-generator/) ([Markdown](https://acrafto.com/ar/random-number-generator/index.md))
- हिन्दी (hi): [रैंडम नंबर जनरेटर](https://acrafto.com/hi/random-number-generator/) ([Markdown](https://acrafto.com/hi/random-number-generator/index.md))
- Bahasa Indonesia (id): [Generator angka acak](https://acrafto.com/id/generator-angka-acak-online/) ([Markdown](https://acrafto.com/id/generator-angka-acak-online/index.md))
- ไทย (th): [สุ่มตัวเลข](https://acrafto.com/th/random-number-generator/) ([Markdown](https://acrafto.com/th/random-number-generator/index.md))
- עברית (he): [מחולל מספרים אקראיים](https://acrafto.com/he/random-number-generator/) ([Markdown](https://acrafto.com/he/random-number-generator/index.md))
