This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
std random
- From: Ed Smith-Rowland <3dw4rd at verizon dot net>
- To: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Mon, 08 Dec 2008 08:04:17 -0500
- Subject: std random
Greetings,
A while back I noted that the std random was different from the tr1
random facility. My original plan was to simply rename the classes in
the std implementation. Further investigation into the latest CD for
C++-0X revealed that the differences were far more pervasive and deeper
that simply renaming (even renaming involved more hacking of TR1 than
would make it worth while).
The attached patch splits the random facility. It also goes a long way
toward completing the std random facility. The new analytic type
distributions were obtained by studying the gmp implementations. The
sampling distributions are completely new as are two new engine
adaptors: independent_bits and shuffle_order. The generate_canonical
and the seed_seq utilities are also new. Even the engines and the
distributions that have direct analogs in tr1 have been substantially
reworked due to the changes in design in the later drafts.
This patch is a tad more aggressive than one would want at this stage
;-). This would only go in for 4.5 I think. That leaves the question
of what we should do for 4.4. I think it may be misleading to keep
random in std. I think it may be best to simply delete or disable
include/std/random for now. What do all of you you think?
The patch bootstraps and regtests with no new fails on
x86_64-unknown-linux-gnu.
The one thing that I must figure out before release is that one of the
constructor overloads:
template<typename SeedSeq>
some_engine(SeedSeq& sseq);
eats a lot of calls that it shouldn't such as this:
some_engine(unsigned long seed);
and barfs because unsigned long doesn't have a generate() method.
I need to kind of pseudo-concept for SeedSeq. Any pointers on how this
mechanism works in gcc would be helpful. I'm just starting to look at
this. I need to request that a type support a generate(Iter,Iter)
method before being worthy of the first ctor.
I'll make a list of other issues more specific to random that I and
others could help think about in another message.
Thank you,
Ed
Attachment:
CL_random
Description: video/flv
Attachment:
random.diff.bz2
Description: Binary data