Too complicated code for generating a random string?

Ali Çehreli acehreli at yahoo.com
Fri Feb 22 16:44:15 PST 2013


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)));
}

Ali


More information about the Digitalmars-d mailing list