# Generate a random number exclusive on both sides: smaller# < x < larger#?

Hi.
How can I generate a random real number between -3 and 3 that is exclusive on both sides?
Thank you.

`rand()*(3.0 - (-3.0)) + (-3.0)`

That doesn’t exclude `-3.0`, because `rand()` is uniform in `[0,1)`.

See this answer: How to create a random Uniform Distribution between (but excluding) 0 and 10? - #21 by Elrod, which leads to the analogous solution:

``````prevfloat(6.0) * (1 - rand()) - 3
``````

for generating random numbers uniformly for floating-point values in the open interval `(-3,3)`.

2 Likes

Thank you, Marc!
That would have taken me at least forever to figure out. Gonna go with Steven’s solution; thank you nonetheless!

Thank you, Steven.
I didn’t see your answer before thanking Marc for a solution, lol.
I’m going to go with your solution on faith for now, until I am more adept with Julia.
Thank you.
Thanks again.

How to get random number between

small < x < large

``````julia> small=-3.0
-3.0

julia> large=3.0
3.0

julia> prevfloat(large - small) * (1 - rand()) + small
-0.10856055483983429
``````
1 Like

Thank you, StevenSiew.
From stevengj’s answer, my perspective was: excluding the minimum via (1-rand()) and excluding the maximum via prevfloat(6.0) and then adjusting the final output by subtracting the midway value.
However I do appreciate your formulaic presentation for it’s clarity, so I will mark your response as the solution for future seekers…