lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dawid Weiss (JIRA)" <>
Subject [jira] [Commented] (LUCENE-4148) _TestUtil should be able to generate random longs
Date Mon, 18 Jun 2012 08:49:42 GMT


Dawid Weiss commented on LUCENE-4148:

I didn't check _TestUtil, to be honest -- I think it did have a bug with range overflow passed
to nextInt (which is not a problem in practice, but was my example on how randomized testing
can explore unexpected things). 

Anyway, as for randomLongBetween -- here you'd need to be more careful about double's representation
so simple scaling won't work (there are ranges of double that transform to NaNs for example).
I am not so strong in numerical analysis to be able to prove something is a correct solution
to the problem. My (naive) take at this would be to calculate the range and then if split
into a few cases:

1) if it doesn't exceed a positive int, use nextInt()
2) if it doesn't exceed a positive long, use nextLong()
3) if it does exceed positive long, use BigDecimal? :) 

Maybe this can be done faster without keeping the uniform distribution requirement so strong
(i.e. use a modulo from a combination of two concatenated longs as BigDecimal or something
like that).
> _TestUtil should be able to generate random longs
> -------------------------------------------------
>                 Key: LUCENE-4148
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: general/test
>            Reporter: Adrien Grand
>            Priority: Trivial
> It would be helpful in TestPackedInts at least, in order to generate random values (as
a workaround, we currently generate a random int between 0 and {{min(Integer.MAX_VALUE, PackedInts.maxValue(bitsPerValue)}}).
Moreover, it would help to fix {{nextInt}} for large ranges (calling {{nextInt(random, -10,
Integer.MAX_VALUE)}} or even {{nextInt(random, 0, Integer.MAX_VALUE)}} currently fails because
the range of values is {{> Integer.MAX_VALUE}}.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message