Có cách nào để tạo một số ngẫu nhiên dựa trên giá trị tối thiểu và tối đa không?
Ví dụ: nếu tối thiểu là 1 và tối đa 20, nó sẽ tạo ra bất kỳ số nào từ 1 đến 20, bao gồm cả 1 và 20?
Có cách nào để tạo một số ngẫu nhiên dựa trên giá trị tối thiểu và tối đa không?
Ví dụ: nếu tối thiểu là 1 và tối đa 20, nó sẽ tạo ra bất kỳ số nào từ 1 đến 20, bao gồm cả 1 và 20?
random_int()
, random_bytes()
hoặc openssl_random_pseudo_bytes()
. như @Salvador Dali đã nói rand()
không tạo ra các kết quả an toàn bằng mật mã. Tài liệu Xem php.net/manual/en/function.rand.php
Câu trả lời:
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
PHP_INT_MAX < ($max-$min)
, bạn cần thêm các khoảng với nhau, như được mô tả trong câu trả lời này .
Trong một PHP7 mới , cuối cùng cũng có một hỗ trợ cho các số nguyên giả ngẫu nhiên an toàn bằng mật mã.
int random_int ( int $min , int $max )
random_int - Tạo các số nguyên giả ngẫu nhiên an toàn bằng mật mã
về cơ bản khiến các câu trả lời trước đó trở nên lỗi thời.
random_int
and random_bytes
function - github.com/paragonie/random_compat .
random_int
không? Nếu nó cung cấp các số ngẫu nhiên "tốt hơn", tại sao không sử dụng nó vì những lý do không liên quan đến tiền điện tử?
random_int
s hiện có thành rand
s. Ngoài ra, trường hợp sử dụng của tôi là một thuật toán thử lại, và tôi chắc chắn không muốn nhiều chức năng thất bại kết tụ lại sau khi ngủ vì ints ngẫu nhiên có thể dự đoán
Một nhanh hơn phiên bản nhanh hơn sẽ sử dụng mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
Nguồn: http://www.php.net/manual/en/ Chức năng.mt-rand.php .
LƯU Ý: Máy chủ của bạn cần phải bật mô-đun Math PHP để điều này hoạt động. Nếu không, hãy thông báo lỗi cho máy chủ của bạn để kích hoạt nó hoặc bạn phải sử dụng rand () bình thường (và chậm hơn).
(rand() % ($max-$min)) + $min
hoặc là
rand ( $min , $max )
Tôi đã gói các câu trả lời ở đây và làm cho phiên bản độc lập;
function generateRandom($min = 1, $max = 20) {
if (function_exists('random_int')):
return random_int($min, $max); // more secure
elseif (function_exists('mt_rand')):
return mt_rand($min, $max); // faster
endif;
return rand($min, $max); // old
}
rand(1,20)
Tài liệu cho hàm rand của PHP có ở đây:
http://php.net/manual/en/ Chức năng.rand.php
Sử dụng srand()
hàm để đặt giá trị gốc của trình tạo số ngẫu nhiên.
Hãy thử cái này. Nó sẽ tạo ra id theo ý muốn của bạn.
function id()
{
// add limit
$id_length = 20;
// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {
// generate randomly within given character/digits
@$token .= $alfa[rand(1, strlen($alfa))];
}
return $token;
}