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