Too complicated code for generating a random string?

Jens Mueller jens.k.mueller at gmx.de
Sat Feb 23 03:51:30 PST 2013


Ali Çehreli wrote:
> On 02/22/2013 04:23 PM, Jens Mueller wrote:
> >Hi,
> >
> >I'd like to sample with replacement. But found no simple way.
> >In particular I want to generate a random string of given letters, say
> >std.ascii.letters.
> >
> >Anybody a simpler version than
> >
> >auto randomString = repeat('a').take(10).map!(c =>  randomSample(letters, 1, letters.length))().joiner();
> >
> >?
> >
> >Jens
> 
> Here is another way:
> 
> import std.stdio;
> import std.algorithm;
> import std.ascii;
> import std.random;
> import std.range;
> 
> auto pickOne(R)(R range)
>     // insert template constraints here ... :)
> {
>     return range[uniform(0, range.length)];
> }
> 
> void main()
> {
>     writeln(iota(10).map!((_) => pickOne(letters)));
> }

Thanks that looks better.
Phobos misses a pickOne function.

Jens


More information about the Digitalmars-d mailing list