Thread overview
Lazy Generation of Random Sequence
Apr 26, 2016
Nordlöw
Apr 26, 2016
Nordlöw
Apr 26, 2016
Seb
Apr 26, 2016
Nordlöw
Apr 26, 2016
Nordlöw
Apr 26, 2016
Seb
April 26, 2016
How do I lazily generate a sequence of random instances of type `T` as an `InputRange`?
April 26, 2016
On Tuesday, 26 April 2016 at 10:31:22 UTC, Nordlöw wrote:
> How do I lazily generate a sequence of random instances of type `T` as an `InputRange`?

Ahh, I found it:

        import std.range : generate, take;
        import std.random : uniform;
        auto randomSamples = generate!(() => uniform!Key).take(n);

I should have guessed that...
April 26, 2016
On Tuesday, 26 April 2016 at 10:50:27 UTC, Nordlöw wrote:
> On Tuesday, 26 April 2016 at 10:31:22 UTC, Nordlöw wrote:
>> How do I lazily generate a sequence of random instances of type `T` as an `InputRange`?
>
> Ahh, I found it:
>
>         import std.range : generate, take;
>         import std.random : uniform;
>         auto randomSamples = generate!(() => uniform!Key).take(n);
>
> I should have guessed that...

Btw if you do random generation at the moment, you should always be aware that it's super-easy to do an implicit copy if you pass around the rndGen, see:

http://dconf.org/2015/talks/wakeling.html
April 26, 2016
On Tuesday, 26 April 2016 at 11:09:42 UTC, Seb wrote:
> Btw if you do random generation at the moment, you should always be aware that it's super-easy to do an implicit copy if you pass around the rndGen

So should I pass it by ref or const ref then?
April 26, 2016
On Tuesday, 26 April 2016 at 17:38:33 UTC, Nordlöw wrote:
> On Tuesday, 26 April 2016 at 11:09:42 UTC, Seb wrote:
>> Btw if you do random generation at the moment, you should always be aware that it's super-easy to do an implicit copy if you pass around the rndGen
>
> So should I pass it by ref or const ref then?

Doh. Const ref is of no use... just by ref then, right?
April 26, 2016
On Tuesday, 26 April 2016 at 17:38:33 UTC, Nordlöw wrote:
> On Tuesday, 26 April 2016 at 11:09:42 UTC, Seb wrote:
>> Btw if you do random generation at the moment, you should always be aware that it's super-easy to do an implicit copy if you pass around the rndGen
>
> So should I pass it by ref or const ref then?

I guess both work fine, but this was just a warning for other case.
The example that @WebDrake mentioned on his slides can happen too easily - a reason why we should fix it (which is on my agenda).