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