Uniuq no


#1

I want to create new unique id in ruby.I have used the following
coding.But I don’'t know whether it works perfectly or not.

t = Time.new
p “%10.5f” % t.to_f

does it give unique value always.I you know some other way ,please say
to create unique id .


#2

Vetrivel V. wrote:

I want to create new unique id in ruby.I have used the following
coding.But I don’'t know whether it works perfectly or not.

t = Time.new
p “%10.5f” % t.to_f

does it give unique value always.

This might be better:

d = Time.new
t = d.to_f
puts t

r = rand
puts r

p_id = $$
puts p_id

new_id = t + 10000000 * r + 10000000 * p_id
p new_id


#3

7stud – wrote:

Vetrivel V. wrote:

I want to create new unique id in ruby.I have used the following
coding.But I don’'t know whether it works perfectly or not.

t = Time.new
p “%10.5f” % t.to_f

does it give unique value always.

This might be better:

d = Time.new
t = d.to_f
puts t

r = rand
puts r

p_id = $$
puts p_id

new_id = t + 10000000 * r + 10000000 * p_id
p new_id

Be a little careful with this, floats are not very precise, (see:
http://www.ruby-forum.com/topic/178503 ) and this could lead to some
duplication.

irb(main):001:0> a = (10.12 * 100).to_i
=> 1011
irb(main):002:0> b = (10.11 * 100).to_i
=> 1011
irb(main):003:0> a == b
=> true

While this really shouldn’t be a problem with this scheme, big decimal
might be safer…

(see:
http://www.ruby-doc.org/stdlib/libdoc/bigdecimal/rdoc/classes/BigDecimal.html
)


#4

Time.new.to_i.to_s<<rand.to_s

Blog: http://random8.zenunit.com/
Learn rails: http://sensei.zenunit.com/

On 14/02/2009, at 8:19 PM, Vetrivel V.


#5

I want to create new unique id in ruby.I have used the following
coding.But I don’'t know whether it works perfectly or not.

t = Time.new
p “%10.5f” % t.to_f

does it give unique value always.I you know some other way ,please say
to create unique id .

UUID¹ is a standard way of constructing unique identifiers, and a Ruby
library² exist already, so unless you require the identifiers to be
integers, I suggest you use that.

[1] http://en.wikipedia.org/wiki/UUID
[2] http://wiki.github.com/assaf/uuid


Lars H.

“If anyone disagrees with anything I say, I am quite prepared not only
to
retract it, but also to deny under oath that I ever said it.” -Tom
Lehrer


#6

Vetrivel V. wrote:

I want to create new unique id in ruby.I have used the following
coding.But I don’'t know whether it works perfectly or not.

t = Time.new
p “%10.5f” % t.to_f

does it give unique value always.I you know some other way ,please say
to create unique id .

How about something like this…
count = 0
t = Time.now.to_s
10000.times {
if( t == Time.now.to_s)
count = count + 1
else
count = 0
t = Time.now.to_s
end
uniqid = t + “.” + count.to_s
puts uniqid
}

That way you don’t have to worry about rounding, or the possibility that
the same random number might come up twice. The only real problem with
this scheme is that on a very fast computer it might be possible to
generate more ids each second than will fit in an Int. But, Bignum might
be able to help there…


#7

On Feb 25, 2009, at 3:14 PM, Lars H. wrote:

to create unique id .

“If anyone disagrees with anything I say, I am quite prepared not
only to
retract it, but also to deny under oath that I ever said it.” -Tom
Lehrer

UUIDs can also be notated in an integer representation. It’s just a
bit long.

There are multiple libraries, this example uses the gem uuidtools:

UUID.timestamp_create.to_i
227941543066369752189048382045440381927

They are the best way to choose.

Regards,
Florian


Florian G.

smtp: removed_email_address@domain.invalid
jabber: removed_email_address@domain.invalid
gpg: 533148E2