1. Smallest Non-Zero Number from rnd()

What is the smallest non-zero number that rnd() will return?

It seems to be 0.01. If so, is there any way to make it more precise?

For example, to get numbers between 0.001 and 1? or 0.0001 and 1?

I guess I could always multiply to get integers and use rand_range()...

new topic     » topic index » view message » categorize

2. Re: Smallest Non-Zero Number from rnd()

euphoric said...

What is the smallest non-zero number that rnd() will return?

It seems to be 0.01. If so, is there any way to make it more precise?

For example, to get numbers between 0.001 and 1? or 0.0001 and 1?

I guess I could always multiply to get integers and use rand_range()...

Perhaps I'm misunderstanding the question, but a test shows me that rnd() can return numbers smaller than 0.01:

include std/rand.e 
atom x 
while 1 do 
x = rnd()  
if x < 0.001 then ? x end if 
end while 

0.0006218517863 
0.0009995880243 
0.0002405867837 
0.000242709016 
0.0004686160389 
0.0007781575098 
0.0003000935483 

new topic     » goto parent     » topic index » view message » categorize

3. Re: Smallest Non-Zero Number from rnd()

irv said...
euphoric said...

What is the smallest non-zero number that rnd() will return?

Perhaps I'm misunderstanding the question, but a test shows me that rnd() can return numbers smaller than 0.01:

include std/rand.e 
atom x 
while 1 do 
x = rnd()  
if x < 0.001 then ? x end if 
end while 

0.0006218517863 
0.0009995880243 
0.0002405867837 
0.000242709016 
0.0004686160389 
0.0007781575098 
0.0003000935483 

Oh, nice! I guess my testing wasn't thorough enough. I never saw any numbers that small.

The question remains, what is the smallest? I'd have to guess it's going to be as precise as the highest decimal point, so maybe 0.0000000000001? smile

Although, from your test, it looks like 0.0001 will be the smallest.

ADD: Just did a test, and I'm getting numbers lower than 0.0000001! Wowie!

new topic     » goto parent     » topic index » view message » categorize

4. Re: Smallest Non-Zero Number from rnd()

Just keep adding zeros to the test. It appears that the number below is a practical limit - if not an absolute limit. Reason being, it takes longer and longer to get 'hits' that fall into the < 0.00000001 limit - most results are larger than the limit, and so are discarded.

if x < 0.00000001 then printf(1,"%.12f\n",x) end if 

0.000000007340 
0.000000003116 
0.000000005185 
0.000000008549 
0.000000002161 
0.000000003722 
 

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu