From 241d9b06e2c562442c4bcae074acf4bbc181a5f2 Mon Sep 17 00:00:00 2001 From: narimiran Date: Wed, 10 Apr 2019 15:28:16 +0200 Subject: [PATCH] random: works for slices and enums, fixes #7698 --- lib/pure/random.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/random.nim b/lib/pure/random.nim index 4115d147b3c9..e29ad7955ae5 100644 --- a/lib/pure/random.nim +++ b/lib/pure/random.nim @@ -318,7 +318,7 @@ proc rand*(max: float): float {.benign.} = ## f = 8.717181376738381e-07 rand(state, max) -proc rand*[T](r: var Rand; x: HSlice[T, T]): T = +proc rand*[T: Ordinal](r: var Rand; x: HSlice[T, T]): T = ## For a slice `a..b`, returns a value in the range `a..b` using the given ## state. ## @@ -333,9 +333,9 @@ proc rand*[T](r: var Rand; x: HSlice[T, T]): T = doAssert r.rand(1..6) == 4 doAssert r.rand(1..6) == 4 doAssert r.rand(1..6) == 6 - result = T(rand(r, x.b - x.a)) + x.a + result = T(rand(r, int(x.b) - int(x.a)) + int(x.a)) -proc rand*[T](x: HSlice[T, T]): T = +proc rand*[T: Ordinal](x: HSlice[T, T]): T = ## For a slice `a..b`, returns a value in the range `a..b`. ## ## If `randomize<#randomize>`_ has not been called, the sequence of random