The handle is a unique number assigned by the OS. The range would be at least 31 bits, allowing handles to have values of over 2 billion. The actual number assigned would depend on the internal algorithm used to map the handle to a file control block in the kernel.
Often, even if only a limited number of concurrent handles are available, a large range can be used to ensure that there is no unintended collision caused by use of stale handles by broken applications.
The numbers are distributed widely in the available space. You would need to review the specification or code to see how they are allocated.