Der global eindeutige Identifikator (GUID, Globally Unique Identifier) wird auch UUID (Universally Unique IDentifier) genannt.
GUID ist eine algorithmisch generierte numerische Kennung mit einer binären Länge von 128 Bit. Das Format der GUID ist „xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx“, wobei x eine 32-stellige Hexadezimalzahl im Bereich von 0-9 oder a-f ist. In einer idealen Welt generieren keine zwei Computer oder Computercluster dieselbe GUID.
Die Gesamtzahl der GUIDs erreicht 2^128 (3,4×10^38), daher ist die Möglichkeit, zwei identische GUIDs zufällig zu generieren, sehr gering, aber nicht 0. Der Begriff GUID bezieht sich manchmal speziell auf die Implementierung des UUID-Standards durch Microsoft.
Beim Generieren müssen einige Knoten durch eindeutige IDs gekennzeichnet werden. Die folgenden am häufigsten bewerteten Antworten stehen als Referenz zur Verfügung
function generateUUID() { var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = (d + Math.random()*16)%16 | 0; d = Math.floor(d/16); return (c=='x' ? r : (r&0x3|0x8)).toString(16); }); return uuid; };
Kommentare unter der Antwort: Die Kollisionsrate bei dieser Lösung beträgt weniger als 1/2^^122
Außerdem empfehle ich jedem mehrere Algorithmen
Algorithmus 2
function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); }
Algorithmus 3
function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); }
Algorithmus 4
function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); }
Damit können Länge und Basis angegeben werden. Zum Beispiel
// 8 character ID (base=2) uuid(8, 2) // "01001010" // 8 character ID (base=10) uuid(8, 10) // "47473046" // 8 character ID (base=16) uuid(8, 16) // "098F4D35"
Algorithmus 5
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23] = "-"; var uuid = s.join(""); return uuid; }
Natürlich empfehle ich weiterhin Algorithmus 1. Freunde können nach ihren eigenen Bedürfnissen wählen.