On Saturday, 25 January 2020 at 08:59:23 UTC, Basile B. wrote:
On Saturday, 25 January 2020 at 08:35:18 UTC, mark wrote:
I have this code:

import std.random;
import std.stdio;
void main()
{
    auto aa = ["one": 1, "two": 2, "three": 3];
    writeln(aa);
    auto rnd = rndGen;
    auto word = aa.byKey.choice(rnd);
    writeln(word);
}

And in the D playground it gives this error:
[snip]
I am treating aa as a set and want to pick a random word from it.
What am I doing wrong?

I'm sorry I can't give a link to this code in the D playground but the URL in the web browser is just https://run.dlang.io/ and when I click Shorten to get a URL nothing seems to happen (using Firefox on Linux).

rndGen is a range.

Use `auto word = aa.byKey.choice(rnd.front())` as index instead.
Then `rndGen.popFront()` to advance.

I tried that. It doesn't solve the problem but does reduce the size of the error output to:

onlineapp.d(9): Error: template std.random.choice cannot deduce function from argument types !()(Result, uint), candidates are: /dlang/dmd/linux/bin64/../../src/phobos/std/random.d(2599): choice(Range, RandomGen = Random)(auto ref Range range, ref RandomGen urng) /dlang/dmd/linux/bin64/../../src/phobos/std/random.d(2609): choice(Range)(auto ref Range range)

Reply via email to