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

**URL:** https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719
**Category:** General Usage
**Tags:** question
**Created:** [March 10, 2022, 9:32pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719 "2022-03-10T21:32:41Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Bob\_Bass](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bob_bass/32/33379_2.png) [@Bob\_Bass](https://discourse.julialang.org/u/Bob_Bass)
#### Post date: [March 10, 2022, 9:32pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/1 "2022-03-10T21:32:41Z")

</div>

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

---

<div class="post-metadata">

### Author: ![MarcBerliner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcberliner/32/14883_2.png) [@MarcBerliner](https://discourse.julialang.org/u/MarcBerliner)
#### Post date: [March 10, 2022, 9:39pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/2 "2022-03-10T21:39:31Z")

</div>

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

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [March 10, 2022, 9:43pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/3 "2022-03-10T21:43:00Z")

</div>

> [@MarcBerliner](#):
>
> 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](https://discourse.julialang.org/t/how-to-create-a-random-uniform-distribution-between-but-excluding-0-and-10/21908/21), which leads to the analogous solution:

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

```

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

---

<div class="post-metadata">

### Author: ![Bob\_Bass](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bob_bass/32/33379_2.png) [@Bob\_Bass](https://discourse.julialang.org/u/Bob_Bass)
#### Post date: [March 10, 2022, 9:43pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/4 "2022-03-10T21:43:45Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Bob\_Bass](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bob_bass/32/33379_2.png) [@Bob\_Bass](https://discourse.julialang.org/u/Bob_Bass)
#### Post date: [March 10, 2022, 9:48pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/5 "2022-03-10T21:48:14Z")

</div>

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.  
EDIT: Actually, I recall reading about prevfloat() somewhere and your solution makes clear sense now.  
Thanks again.

---

<div class="post-metadata">

### Author: ![StevenSiew](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevensiew/32/218393_2.png) [@StevenSiew](https://discourse.julialang.org/u/StevenSiew)
#### Post date: [March 10, 2022, 9:54pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/6 "2022-03-10T21:54:50Z")

</div>

How to get random number between

small \< x \< large

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

julia> large=3.0
3.0

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

```

---

<div class="post-metadata">

### Author: ![Bob\_Bass](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bob_bass/32/33379_2.png) [@Bob\_Bass](https://discourse.julialang.org/u/Bob_Bass)
#### Post date: [March 10, 2022, 10:02pm UTC](https://discourse.julialang.org/t/generate-a-random-number-exclusive-on-both-sides-smaller-x-larger/77719/7 "2022-03-10T22:02:53Z")

</div>

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…
