Skip to content

Commit 7823e11

Browse files
authored
Merge pull request #5741 from dunkyp/issue_17832
Fix Issue 17832 - std.random.choice cannot be used with other random generators
2 parents 70d3b89 + db5c1c8 commit 7823e11

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

std/random.d

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2018,7 +2018,7 @@ Returns:
20182018
a copy.
20192019
*/
20202020
auto ref choice(Range, RandomGen = Random)(auto ref Range range,
2021-
ref RandomGen urng = rndGen)
2021+
ref RandomGen urng)
20222022
if (isRandomAccessRange!Range && hasLength!Range && isUniformRNG!RandomGen)
20232023
{
20242024
assert(range.length > 0,
@@ -2027,6 +2027,12 @@ if (isRandomAccessRange!Range && hasLength!Range && isUniformRNG!RandomGen)
20272027
return range[uniform(size_t(0), $, urng)];
20282028
}
20292029

2030+
/// ditto
2031+
auto ref choice(Range)(auto ref Range range)
2032+
{
2033+
return choice(range, rndGen);
2034+
}
2035+
20302036
///
20312037
@safe unittest
20322038
{
@@ -2041,6 +2047,10 @@ if (isRandomAccessRange!Range && hasLength!Range && isUniformRNG!RandomGen)
20412047
auto urng = Random(unpredictableSeed);
20422048
elem = choice(array, urng);
20432049

2050+
assert(canFind(array, elem),
2051+
"Choice did not return a valid element from the given Range");
2052+
auto rng2 = Xorshift();
2053+
elem = choice(array, rng2);
20442054
assert(canFind(array, elem),
20452055
"Choice did not return a valid element from the given Range");
20462056
}

0 commit comments

Comments
 (0)