On Mon, Aug 06, 2012 at 12:44:24PM -0700, Phil Steitz wrote: > On 8/6/12 11:41 AM, Gilles Sadowski wrote: > >>> [...] > >>>>> The RandomData class (or whatever it would be called) does indeed seem > >>>>> useful. If we plan to keep it, we should probably make sure that there > >>>>> is a sample/next/... method in that class for EVERY distribution, as > >>>>> some of them are missing, if I remember correctly. Perhaps this is a > >>>>> separate issue though? > >>>>> > >>>> All have the method now, but the impls delegate to RandomDataImpl. > >>> They do not. > >> The method is in the interface. There is a default, inversion-based > >> implementation in the abstract base class. Not all distributions override > >> the default impl. > >> The ones that do delegate to the specialized methods in RandomDataImpl > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > > No; as indicated before (cf. message referred to below), the distribution > > classes do not delegate anymore to "RandomDataImpl", since revision 1363604 > > (resolution of MATH-764 and MATH-823). > > Sorry, my mistake. I see the code has been duplicated. I will see > if I can modify the methods in RandomDataImpl to use the impls in > the distribution classes. Should be possible by creating instances > using the configured RandomGenerator.
Yes, that was what I also proposed when we started talking about transferring the (sampling) code from RAndomDataImpl over to the "sample()" methods. > See more below. > > > >>>> In some cases, there is nothing better implemented than just inversion, > >>>> provided by the default inversion sampler. That is OK. What we need to > >>>> do is just move the implementations of the default and specialized > >>>> samplers to the actual distribution classes. These can't be static, as > >>>> they use the RamdomData instance. I will take care of this. > >>> Thanks for reading fully this message > >>> http://markmail.org/message/5fpmwyiiw2xq4o3q > >> I don't get the desire to make sample() static. > > There is no such desire stated in that message. > > The proposed static method is a "helper" that will take everything needed as > > arguments. It will be defined in the appropriate distribution class, to be > > called both by "sample()" from that class and by the convenience methods in > > "RandomDataImpl". > > OK, I now think I get what you mean. Non-static methods of > "RandomDataImpl" could use static methods from the distribution > classes, passing the configured RandomGenerator as an argument. Is > that what you mean? Yes! :-) > I don't know how much direct usage the static > methods in the distribution classes would get; since most actual > examples involve generating sequences using the same generator > repeatedly (so sample() is more natural). I totally agree. They would exist only for the sake of not duplicating the sampling code. > I guess "RandomDataImpl" > would then not have to instantiate distributions, but there is not > much overhead to creating the ones we have, so not sure it is worth > the effort to add all of these methods. Fine then. I'd also prefer not to create new public methods just for the sake of a convenience class. I.e. we could mention (in "RandomDataImpl") that the convenience comes at a slight efficiency cost. [And that for heavy usage of sampling, one should use the distribution classes directly.] Gilles --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org