-
-
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
wow :) Good this also efficient
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.
Similarly :)
nice