10/10/2018, 09:18
Xác suất trùng lặp ?
Có một chuỗi gồm 32 ký tự bất kỳ lấy ra từ tập hợp [A-Za-z0-9]. Xác suất xảy ra trường hợp xuất hiện 1 cặp chuỗi trùng nhau là bao nhiêu ? Công thức tổng quát cho trường hợp chuỗi có n ký tự là gì ?
Bác nào giỏi về toán xác suất chỉ giáo em với
Bác nào giỏi về toán xác suất chỉ giáo em với
Bài liên quan
Làm quả MD5 hoặc SHA cho nhanh đi, tính làm gì cho mệt
<script type="text/javascript">
function createId(len){
var id=n='', chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
chars+=rd.toLowerCase()+'0123456789';
for(var i= 0;i<len;i++){
n=Math.round(Math. random()*chars.length);
id+=chars.charAt(n);
}
return id;
}
</script>
Như bác nói, có đến 62^32 chuỗi khác nhau, nghĩa là nếu số row của bảng không lớn thì cũng khó xảy ra trùng lặp. Nhưng tôi hy vọng tìm được con số cụ thể hơn về khả năng phát sinh trùng lặp, bác ạ
Xét về lý thuyết là vậy nhưng thực tế với các ngôn ngữ lập trình khi có 2 hàm random() gọi ở gần nhau trong khoảng thời gian rất ngắn thì rất dễ sinh trùng lặp. Khó mà tính được chính xác lắm khả năng phát sinh.
Có lần mình làm rand(0,1000) mà có tới hơn 30% trùng lặp với số kết quả lấy là 200, cũng có lần lấy 200 mà chỉ có 2~3% trùng. CHưa lần nào xảy ra hiện tượng không trùng
@ dangviethai : Tui có thói quen đưa các xử lý về phía client. Nhưng hiện tại thì vẫn làm trên server với hàm createId bên dưới, khi tạo ID và trong các hình ảnh verification code :
function createId($len){
$id=''; $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz9876543210';
mt_srand((double)microtime()*1000000);
while (strlen($id)<$len){
$id.=$chars{mt_rand(0,strlen($chars)-1)};
}
return $id;
}
Còn vấn đề chính, xác suất trùng lặp, phải tính như thế nào các bác ? Tôi vẫn tò mò quá