Tôi cần tạo một số ngẫu nhiên với x số lượng chữ số.
Vì vậy, hãy nói x là 5, tôi cần một số để được ví dụ. 35562 Nếu x là 3, thì nó sẽ ném lại một cái gì đó giống như; 463
Ai đó có thể cho tôi thấy điều này được thực hiện như thế nào?
Đã hỏi ngày 21 tháng 11 năm 2011 lúc 17:35Nov 21, 2011 at 17:35
user1022585user1022585user1022585
12.6K19 Huy hiệu vàng53 Huy hiệu bạc74 Huy hiệu đồng19 gold badges53 silver badges74 bronze badges
0
Bạn có thể sử dụng
98450
79324
23017
04317
26479
3 cùng với 98450
79324
23017
04317
26479
4 để thực hiện điều này:$digits = 3;
echo rand[pow[10, $digits-1], pow[10, $digits]-1];
Điều này sẽ xuất ra một số từ 100 đến 999. Điều này bởi vì 10^2 = 100 và 10^3 = 1000 và sau đó bạn cần trừ nó với một để có được nó trong phạm vi mong muốn.
Nếu 005 cũng là một ví dụ hợp lệ, bạn sẽ sử dụng mã sau để đệm nó bằng các số 0 hàng đầu:
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:38Nov 21, 2011 at 17:38
3
Dưới đây là một giải pháp đơn giản mà không có bất kỳ vòng lặp hoặc bất kỳ rắc rối nào cho phép bạn tạo chuỗi ngẫu nhiên với các ký tự, số hoặc thậm chí với các ký hiệu đặc biệt.
98450
79324
23017
04317
26479
5trong đó
98450
79324
23017
04317
26479
6 có thể là số chữ sốVí dụ.
98450
79324
23017
04317
26479
7Kết quả sau một vài vụ hành quyết
98450
79324
23017
04317
26479
Bạn cũng có thể sử dụng cùng một mã để tạo chuỗi ngẫu nhiên, như thế này
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
Kết quả với
98450
79324
23017
04317
26479
8FgHmqpTR3Ox
O9BsNgcPJDb
1v8Aw5b6H7f
haH40dmAxZf
0EpvHL5lTKr
Đã trả lời ngày 13 tháng 6 năm 2017 lúc 13:56Jun 13, 2017 at 13:56
Akshay Khaleakshay KhaleAkshay Khale
7.9018 Huy hiệu vàng49 Huy hiệu bạc58 Huy hiệu Đồng8 gold badges49 silver badges58 bronze badges
2
Bạn có thể sử dụng
98450
79324
23017
04317
26479
9 cho mục đích chính xác đó.Để giới hạn các giá trị đối với các giá trị với các chữ số X, bạn có thể sử dụng các mục sau:
$x = 3; // Amount of digits
$min = pow[10,$x];
$max = pow[10,$x+1]-1];
$value = rand[$min, $max];
Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:37Nov 21, 2011 at 17:37
Halfanhalfdanhalfdan
32,8K8 Huy hiệu vàng76 Huy hiệu bạc86 Huy hiệu Đồng8 gold badges76 silver badges86 bronze badges
3
Đối xử với số của bạn như một danh sách các chữ số và chỉ nối một chữ số ngẫu nhiên mỗi lần:
function n_digit_random[$digits] {
$temp = "";
for [$i = 0; $i < $digits; $i++] {
$temp .= rand[0, 9];
}
return [int]$temp;
}
Hoặc một giải pháp số hoàn toàn:
function n_digit_random[$digits]
return rand[pow[10, $digits - 1] - 1, pow[10, $digits] - 1];
}
Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:37Nov 21, 2011 at 17:37
HalfanhalfdanBlender
32,8K8 Huy hiệu vàng76 Huy hiệu bạc86 Huy hiệu Đồng52 gold badges429 silver badges487 bronze badges
Đối xử với số của bạn như một danh sách các chữ số và chỉ nối một chữ số ngẫu nhiên mỗi lần:
Hoặc một giải pháp số hoàn toàn:0 to 999.
BlenderBlender5 digits.
281K52 Huy hiệu vàng429 Huy hiệu bạc487 Huy hiệu đồngMay 30, 2015 at 14:19
1
function random_numbers[$digits] {
$min = pow[10, $digits - 1];
$max = pow[10, $digits] - 1;
return mt_rand[$min, $max];
}
Cách đơn giản nhất tôi có thể nghĩ đến là sử dụng chức năng
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
0 với $randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
1Trong ví dụ trên, nó sẽ tạo ra số ngẫu nhiên trong phạm vi 0 đến 999.Nov 21, 2011 at 17:40
Và có 5 chữ số.♦animuson
Đã trả lời ngày 30 tháng 5 năm 2015 lúc 14:1928 gold badges139 silver badges145 bronze badges
4
Đã thử nghiệm ở đây.
benchmark:
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
0Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:40
Animuson ♦ AnimusonFeb 21, 2017 at 16:36
52.8K28 Huy hiệu vàng139 Huy hiệu bạc145 Huy hiệu đồngAlex
2 hoạt động nhanh hơn x4 lần $randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
34 silver badges9 bronze badges$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
1
Cả hai chức năng đều chạy trong 100000 lần lặp để làm cho kết quả rõ ràng hơn
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
1Đã trả lời ngày 21 tháng 2 năm 2017 lúc 16:36Jun 19, 2019 at 11:22
AlexalexAnoop P S
3414 Huy hiệu bạc9 Huy hiệu Đồng1 gold badge11 silver badges30 bronze badges
Vâng, bạn có thể sử dụng làm chức năng PHP đơn giản MT_RAND [2000,9000] có thể tạo số ngẫu nhiên 4 chữ số
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
2Đã trả lời ngày 19 tháng 6 năm 2019 lúc 11:22Nov 21, 2011 at 17:39
Anoop p sanoop p sRene Pot
7041 Huy hiệu vàng11 Huy hiệu bạc 30 Huy hiệu Đồng7 gold badges67 silver badges91 bronze badges
0
Làm điều đó với một vòng lặp:
usage:
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
3Trong ví dụ trên, nó sẽ tạo ra số ngẫu nhiên trong phạm vi 0 đến 999.Nov 21, 2011 at 17:40
Và có 5 chữ số.easyb
Đã trả lời ngày 30 tháng 5 năm 2015 lúc 14:191 silver badge8 bronze badges
1
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
4Đã thử nghiệm ở đây.Mar 30, 2016 at 8:26
1
Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:40
Animuson ♦ Animuson
52.8K28 Huy hiệu vàng139 Huy hiệu bạc145 Huy hiệu đồng
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
2 hoạt động nhanh hơn x4 lần $randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
3Cả hai chức năng đều chạy trong 100000 lần lặp để làm cho kết quả rõ ràng hơn
Đã trả lời ngày 21 tháng 2 năm 2017 lúc 16:36
Alexalex2 gold badges16 silver badges39 bronze badges
3414 Huy hiệu bạc9 Huy hiệu ĐồngSep 4, 2019 at 9:43
Vâng, bạn có thể sử dụng làm chức năng PHP đơn giản MT_RAND [2000,9000] có thể tạo số ngẫu nhiên 4 chữ số
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
5Đã trả lời ngày 19 tháng 6 năm 2019 lúc 11:22May 26, 2020 at 15:46
Anoop p sanoop p s
7041 Huy hiệu vàng11 Huy hiệu bạc 30 Huy hiệu ĐồngLàm điều đó với một vòng lặp:Dec 18, 2014 at 10:08
Susantha7Susantha7Susantha7
Đã trả lời ngày 21 tháng 11 năm 2011 lúc 17:391 gold badge18 silver badges36 bronze badges
Rene Potren Pot
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
724.3K7 Huy hiệu vàng67 Huy hiệu bạc91 Huy hiệu Đồng
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
0 hoặc $randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
5 sẽ làm ...Mar 19, 2015 at 9:37
EasyBeasybMRodrigues
681 Huy hiệu bạc8 Huy hiệu đồng1 gold badge16 silver badges21 bronze badges
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
8Đã trả lời ngày 30 tháng 3 năm 2016 lúc 8:26Feb 18, 2017 at 15:31
Bạn có thể tạo bất kỳ số ngẫu nhiên chữ X nào với hàm
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
6.$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
9$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
6 nhanh hơn 98450
79324
23017
04317
26479
3.98450
79324
23017
04317
26479
0Cú pháp:
$randomNum=substr[str_shuffle["0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"], 0, $x];
6 hoặc FgHmqpTR3Ox
O9BsNgcPJDb
1v8Aw5b6H7f
haH40dmAxZf
0EpvHL5lTKr
0.Ví dụ:
1FgHmqpTR3Ox O9BsNgcPJDb 1v8Aw5b6H7f haH40dmAxZf 0EpvHL5lTKr
đọc thêm
StatosdotcomJul 29, 2018 at 9:15
3.0792 Huy hiệu vàng16 Huy hiệu bạc39 Huy hiệu đồngReagan Ochora
Đã trả lời ngày 4 tháng 9 năm 2019 lúc 9:431 gold badge18 silver badges19 bronze badges
Sau đây là phương pháp đơn giản để tạo mã xác minh độ dài cụ thể. Độ dài có thể được chỉ định, theo mặc định, nó tạo ra mã 4 chữ số.
//php.net/manual/en/function.rand.php
Đã trả lời ngày 26 tháng 5 năm 2020 lúc 15:46
Kịch bản đơn giản này sẽ làm
$digits = 3;
echo str_pad[rand[0, pow[10, $digits]-1], $digits, '0', STR_PAD_LEFT];
698450
79324
23017
04317
26479
1Đã trả lời ngày 18 tháng 12 năm 2014 lúc 10:08
8881 Huy hiệu vàng18 Huy hiệu bạc36 Huy hiệu đồngAug 23, 2018 at 10:10
Yahya Uddinyahya UddinYahya Uddin
24.2K32 Huy hiệu vàng126 Huy hiệu bạc221 Huy hiệu đồng32 gold badges126 silver badges221 bronze badges
5
Mã sau đây tạo số ngẫu nhiên 4 chữ số:
98450
79324
23017
04317
26479
2Đã trả lời ngày 12 tháng 1 năm 2020 lúc 18:40Jan 12, 2020 at 18:40
1
Bạn thực sự thích làm phức tạp mọi thứ :]
Vấn đề thực sự là OP muốn, có lẽ, thêm vào đó vào cuối một số con số thực sự lớn. Nếu không, tôi không cần phải nghĩ đến điều đó. vì số không bên trái trong bất kỳ số nào là, tốt, các số 0 trái.
Vì vậy, chỉ cần nối phần lớn hơn của số đó dưới dạng tổng toán học chứ không phải chuỗi.
e.g.
FgHmqpTR3Ox
O9BsNgcPJDb
1v8Aw5b6H7f
haH40dmAxZf
0EpvHL5lTKr
5đơn giản là trở thành
FgHmqpTR3Ox
O9BsNgcPJDb
1v8Aw5b6H7f
haH40dmAxZf
0EpvHL5lTKr
6done.
Đã trả lời ngày 2 tháng 4 năm 2014 lúc 23:03Apr 2, 2014 at 23:03
GCBGCBgcb
13.4K7 Huy hiệu vàng67 Huy hiệu bạc90 Huy hiệu Đồng7 gold badges67 silver badges90 bronze badges
1