-
-
Save Wind4/3baa40b26b89b686e4f2 to your computer and use it in GitHub Desktop.
/*! | |
Math.uuid.js (v1.4) | |
http://www.broofa.com | |
mailto:[email protected] | |
Copyright (c) 2010 Robert Kieffer | |
Dual licensed under the MIT and GPL licenses. | |
*/ | |
/* | |
* Generate a random uuid. | |
* | |
* USAGE: Math.uuid(length, radix) | |
* length - the desired number of characters | |
* radix - the number of allowable values for each character. | |
* | |
* EXAMPLES: | |
* // No arguments - returns RFC4122, version 4 ID | |
* >>> Math.uuid() | |
* "92329D39-6F5C-4520-ABFC-AAB64544E172" | |
* | |
* // One argument - returns ID of the specified length | |
* >>> Math.uuid(15) // 15 character ID (default base=62) | |
* "VcydxgltxrVZSTV" | |
* | |
* // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62) | |
* >>> Math.uuid(8, 2) // 8 character ID (base=2) | |
* "01001010" | |
* >>> Math.uuid(8, 10) // 8 character ID (base=10) | |
* "47473046" | |
* >>> Math.uuid(8, 16) // 8 character ID (base=16) | |
* "098F4D35" | |
*/ | |
(function() { | |
// Private array of chars to use | |
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); | |
Math.uuid = function (len, radix) { | |
var chars = CHARS, 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(''); | |
}; | |
// A more performant, but slightly bulkier, RFC4122v4 solution. We boost performance | |
// by minimizing calls to random() | |
Math.uuidFast = function() { | |
var chars = CHARS, uuid = new Array(36), rnd=0, r; | |
for (var i = 0; i < 36; i++) { | |
if (i==8 || i==13 || i==18 || i==23) { | |
uuid[i] = '-'; | |
} else if (i==14) { | |
uuid[i] = '4'; | |
} else { | |
if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0; | |
r = rnd & 0xf; | |
rnd = rnd >> 4; | |
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; | |
} | |
} | |
return uuid.join(''); | |
}; | |
// A more compact, but less performant, RFC4122v4 solution: | |
Math.uuidCompact = function() { | |
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); | |
}); | |
}; | |
})(); |
Interesting that this is in the google.com source code
yeah! I was just curious of google.com's homepage source code and from there I fell into a rabbit hole. Its very interesting that even though the rest of the code is kinda minified and obfuscated, the licenses section have been clearly seperated!
I was looking for a way to generate UUIDs, and now I'm curious about google's code... lol damUGuys
it is also in the gpt.js helper script
Your code looks good. I recently started learning to program in college. At first, it was complicated for me; I lacked basic knowledge of mathematics. Then I pulled them up with this site https://plainmath.net which is for students. There is a lot of information with clear examples. After that, it became easier for me to learn to program. I hope you don't have such problems.
I also got here from Google's code (:
Also here from Google code. Trying to use google translate programatically.
wow :) Good this also efficient