On Wednesday, 7 November 2018 at 17:05:31 UTC, 9il wrote:
I have updated template constraints.
http://docs.random.dlang.io/latest/mir_random_algorithm.html#.sample

The problem that looks like Phobos map does not define all required primitives like popFrontExactly.

Ok... didn't have this on my radar.

I suggest using Mir instead of Phobos if possible:


https://run.dlang.io/is/NBTfwF

/+dub.sdl:
dependency "mir-algorithm" version="~>3.0.3"
dependency "mir-random" version="~>2.1.1"
+/

import mir.random.algorithm;
import mir.algorithm.iteration;
import mir.ndslice: sliced, iota, map, member;

void main()
{
        S[] arr;
        arr.length = 42;
    // using each
        arr.length.iota.each!((i, ref el) => el.i = i)(arr);

    // or using each and member
    arr.length.iota.each!"b = a"(arr.member!"i");

    // or using assign
    arr.member!"i"[] = arr.length.iota;

        auto res0 = rne.sample(arr.map!((ref el) => el.i), 1);
    // or using member
        auto res1 = rne.sample(arr.member!"i", 1);

}

struct S { size_t i; }

I will try to adopt this... Thanks a lot!

Reply via email to