how to create guid by javascript?

T

tamsun

we need create a GUID in web page, just like:
{26C2E7C8-C689-D1D5-C452-58EC5A2F2A39}

Could anyone tell me how to use javascript
to create it without ActiveX object?
 
D

Dr John Stockton

JRS: In article <[email protected]>, dated
Mon, 14 Aug 2006 15:36:48 remote, seen in
tamsun said:
we need create a GUID in web page, just like:
{26C2E7C8-C689-D1D5-C452-58EC5A2F2A39}

Could anyone tell me how to use javascript
to create it without ActiveX object?

To make a random string of that form, you can note that it is made up of
four-hex-character units.

function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1) }

should generate such a unit of random value;

Ans =
(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()).toUpperCase()
 
T

tamsun

Great, It's a good method. thank you very much.
I wonder can this method ensure I can create the unique string ?
I don't know the random mechanism of javascript,
e.g. I have 300 computers, and create this random
string concurring, javascript can ensure the
random string is unique?
 
E

Evertjan.

tamsun wrote on 16 aug 2006 in comp.lang.javascript:
and create this random
string concurring, javascript can ensure the
random string is unique?

Uniqueness does not exist in an limited string.
is 1 in a million enough for you?
[changed the string function to:
Math.random().toString(16).substring(2)]


<script type='text/javascript'>

var a,b,n=1;

a = Math.random().toString(16).substring(2);

while (a!=b && n<1e6) {
b=a;
a = Math.random().toString(16).substring(2);
n++;
};

document.write(a+' (value)<br>');
document.write(n+' (number of strings tested)<br>');

</script>
 
M

Michael Winter

On 16/08/2006 02:46, tamsun wrote:

[snip]
e.g. I have 300 computers, and create this random
string concurring, javascript can ensure the
random string is unique?

No. To guarantee that, make a central authority (a single designated
machine) responsible for creating and tracking the generated identifiers.

Mike


When replying to this group, please refrain from top-posting.
 
D

Dr John Stockton

JRS: In article <[email protected]>, dated
Wed, 16 Aug 2006 09:46:13 remote, seen in
tamsun said:
Great, It's a good method. thank you very much.
I wonder can this method ensure I can create the unique string ?
I don't know the random mechanism of javascript,
e.g. I have 300 computers, and create this random
string concurring, javascript can ensure the
random string is unique?

Please read the newsgroup FAQ on proper article formatting.

Only collective management can ensure uniqueness.

Indeed, if your 300 computers are identical, and the function
Math.random() is called at the same time (on some definition of time) on
all of them, then you probably should get identical results on all 300.

(The method of initialisation of the Random Number Generator is
unspecified, but it is common to use clock time; time from some other
origin could be used. Note that the resolution of the initialisation
may be less than that of the generator - see for example <URL:http://www
..merlyn.demon.co.uk/pas-rand.htm>.)

One can test the RNG to see its resolution : "Generator Properties" in
<URL:http://www.merlyn.demon.co.uk/js-randm.htm>.

It seems that some browsers have a 32-bit resolution, others at least
53-bit, in the RNG.

The question of probability of uniqueness is like that of the well-known
birthdays question; pick 23 people at random, and probably two or more
will have the same birthday.

With a 32-bit generator, ISTM that your chances of non-uniqueness are of
the order of 1 in (4E9/300^2) which is about 50000 - you will have to
decide whether that would be good enough, remembering Murphy.

Note : Evertjan's test does what it should; but, as Math.random() can
give exactly 0.5, it cannot be used as a direct substitute for mine.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,044
Latest member
RonaldNen

Latest Threads

Top