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

Reply via email to