Trong SQLite, bạn có thể sử dụng random()
hàm tạo một số giả ngẫu nhiên.
Điều này thật tuyệt, nhưng giá trị trả về nằm trong khoảng từ -9223372036854775808 đến +9223372036854775807.
Điều gì sẽ xảy ra nếu bạn cần một số ngẫu nhiên từ 0 đến 10? Hoặc giả sử, 1 và 100?
May mắn thay, bạn có thể làm điều này bằng cách kết hợp random()
với abs()
và toán tử mô-đun.
Số ngẫu nhiên từ 0 đến 10
Bạn có thể sử dụng mã sau để tạo một số giả ngẫu nhiên từ 0 đến 10.
SELECT abs(random() % 10);
Dưới đây là một ví dụ về việc chọn nhiều giá trị ngẫu nhiên.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Kết quả:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Tăng phạm vi
Tất nhiên, bạn có thể thay đổi giá trị thành bất kỳ thứ gì bạn muốn (giả sử nó nằm trong random()
phạm vi giá trị có thể có).
Đây là một lần nữa với phạm vi được tăng lên từ 0 đến 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Kết quả:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Số ngẫu nhiên từ 1 đến 10
Nếu bạn không muốn con số 0 nằm trong các kết quả có thể xảy ra, bạn có thể sử dụng phương pháp sau.
Đoạn mã sau tạo một số giả ngẫu nhiên từ 1 đến 10.
SELECT abs(random()) % (10 - 1) + 1;
Dưới đây là một ví dụ về việc chọn nhiều giá trị ngẫu nhiên.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Kết quả:
R1 R2 R3 ---------- ---------- ---------- 2 1 8