# Randi(imax,m,n)

17 views (last 30 days)
Moazam Ali on 17 Jun 2020
Edited: James Tursa on 18 Jun 2020
How to increase the size of the argument imax in randi function. I used the code e=randi(phi,1,1) but there comes an error saying value of phi has to be less than 2^52. What to do to increase this range?

Matt J on 17 Jun 2020
Increase it by how much?
Moazam Ali on 18 Jun 2020
The phi I used here is of the order of 2^1024

James Tursa on 17 Jun 2020
Edited: James Tursa on 17 Jun 2020
The point is that once the eps of the max value is greater than 1, you cannot represent contiguous sets of integer values in double precision. E.g.,
>> eps(2^52)
ans =
1
>> eps(2^53)
ans =
2
So double precision could represent 2^52 + 1 exactly, but you see it will not be able to represent 2^53 + 1 exactly because eps(2^53) is greater than 1. So then the question becomes what makes sense for randi to produce as output when it can't represent all of the integers in the desired range? It doesn't make sense, hence the restriction.

#### 1 Comment

Matt J on 17 Jun 2020
And that is why my answer involves a conversion to uint64.

Matt J on 17 Jun 2020
Perhaps as follows,
num = uint64(randi(2^53-1,1))*2^8 +randi(2^8-1,1)