Hello, just noticed an adapter is already referenced (rng.simple.JDKRandomBridge) on the „why not java random“ page. So it can be used with the BigInteger constructor to generate power-of-two randoms (already).
I wont request more Features without having a usecase for them. Thanks for Looking into this. Gruss Bernd -- http://bernd.eckenfels.net Von: Gilles Gesendet: Samstag, 22. Dezember 2018 00:35 An: dev@commons.apache.org Betreff: Re: [rng] Uniform big integers Hi. On Fri, 21 Dec 2018 16:04:05 +0000, Bernd Eckenfels wrote: > Hello, > > The actual discussion on the OpenJDK list turned out to be a wrong > understanding and the simple case of generating random bytes was > enough for BigInteger. > > However regarding RNG I can open requests, one would be for a > RandomAdapter and the other would be to add a factory method for > BigInteger (and possibly BigDecimal) to the Random Providers. (Or > did. > You mean only the Adapter?) I actually meant testing whether the bug you mentioned could be seen with an RNG other than "java.util.Random". But since (IIUC) there is no bug... Adapter/Bridge cannot fulfill all the functionality of "Random" (e.g., there is, intentionally, no "setSeed" method). It's a can of worms/issues with no decent workaround.[1] So better leave that to application developers: The bridge itself is trivial[2]; then they must be aware of what to implement, depending on what the code (to which they pass the adapter) is doing with it. Generating "BigInteger" is at a level higher than the rest of the core API (i.e. "UniformRandomProvider"), which is meant to generate primitive types.[3] At first sight, I'd put that functionality in another module. Regards, Gilles [1] http://commons.apache.org/proper/commons-rng/userguide/why_not_java_random.html [2] We might insert a paragraph about this in the userguide, and/or provide the code snippet in the "commons-rng-examples" module. [3] http://commons.apache.org/proper/commons-rng/commons-rng-client-api/apidocs/org/apache/commons/rng/RestorableUniformRandomProvider.html > > Gruss > Bernd > -- > http://bernd.eckenfels.net > > ________________________________ > Von: Gilles <gil...@harfang.homelinux.org> > Gesendet: Freitag, Dezember 21, 2018 4:43 PM > An: dev@commons.apache.org > Betreff: Re: [rng] Uniform big integers > > On Thu, 20 Dec 2018 17:30:44 +0100, Gilles wrote: >> Hi. >> >> On Thu, 20 Dec 2018 15:15:55 +0000, Bernd Eckenfels wrote: >>> Hello, >>> >>> I don’t know what the usecase is, it is motivated by a Bug about >>> BigInteger(num, Random). I guess one of the users is actually the >>> crypto usecase (starting with random numbers to find primes). >>> >>> I wanted to check how RNG deals with this >> >> You can do it by defining a bridge from [RNG] >> "UniformRandomProvider" >> to "java.util.Random": >> --- CUT (untested) --- >> public class BridgeToRandom extends Random { >> private final UniformRandomProvider delegate; >> >> public BridgeToRandom(UniformRandomProvider rng) { >> delegate = rng; >> } >> >> @Override >> protected int next(int unused) { >> return rng.nextInt(); >> } >> } >> ---CUT--- >> >> Then, you can test all the generators implemented in [RNG]. > > FTR: In case you don't pursue it, please file a report on JIRA > to keep track of this if we want to explore how it could extend > the test suite. > > Thanks, > Gilles > >> >>> (since the additional need >>> for generating a random bitlength looks unfamiliar but logical to >>> me). >>> Is it really not enough to fill all bits randomly (especially for >>> the >>> case where it is a 0 .. 2^n range only)? >>> >>> Discussion is here: >>> >>> >>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2018-December/057594.html >>> >>> Gruss >>> Bernd >>> -- >>> http://bernd.eckenfels.net >>> >>> ________________________________ >>> Von: Gilles <gil...@harfang.homelinux.org> >>> Gesendet: Donnerstag, Dezember 20, 2018 2:16 PM >>> An: dev@commons.apache.org >>> Betreff: Re: [rng](site) broken source(current) link >>> >>> Hi. >>> >>> On Thu, 20 Dec 2018 12:43:51 +0000, Bernd Eckenfels wrote: >>>> I wanted to check if RNG can construct uniformly distributed >>>> BigIntegers and how it is doing it (answer: it doesn’t) >>> >>> It could be a feature request. >>> [I guess that you mean "within a given range".] >>> >>> Being curious: What's the use-case for random "BigInteger"s? >>> >>>> while doing so >>>> I noticed that the site link to the source is broken, maybe this >>>> is >>>> due to git-wip migration? >>> >>> Yes. >>> Thanks; fixed now. >>> >>>> >>>> BTW: http://cr.openjdk.java.net/~bpb/8146153/webrev.01/index.html >>> >>> >>> Regards, >>> Gilles >>> >>>> >>>> Gruss >>>> Bernd >>>> -- >>>> http://bernd.eckenfels.net >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org