[英]generate unique visitorId in JavaScript
我需要在JS中生成visitorId,最大長度為7個字符,有效字符為[0-9] [AZ],有什么想法嗎?
我幾乎可以肯定,您無法在純Javascript中做您想做的事情,因為您無法在不同的訪問者之間進行協調。
只有7個字符,可用值的范圍相對較小-我的意思是,該值足夠小,以至於客戶端對值的任何偽隨機分配幾乎肯定會很快導致沖突(請參閱生日悖論 )。
如果您嘗試通過附加訪問者首次出現的時間來解決該問題,那么通常來說 ,這是一個不錯的策略,但這會進一步影響您的熵。 如果您這次可以用四個字符編碼,那么只有3個字符可以區分在同一秒到達的客戶端(根據他們的時鍾),那么您將再次遇到沖突。
基本上,如果沒有任何一種,這將無法解決:
您必須定義所需的“唯一性”,然后可以對定義您的用戶(例如IP)的“鍵”值進行md5哈希處理
如果您只想要一個隨機字符串,我通過谷歌搜索找到了此功能:
function randomString(string_length) {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var randomstring = '';
for (var i=0; i<string_length; i++) {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
}
document.randform.randomfield.value = randomstring;
}
function rand( min, max ) {
if( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}
function getVisitorId() {
var alpha = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var id = '';
for(var i=0;i<7i++) id+=alpha.charAt(rand(0,35));
return id;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.