From 48cc8dd86b725d987ec52af149f8442bfd7df547 Mon Sep 17 00:00:00 2001 From: div72 <60045611+div72@users.noreply.github.com> Date: Wed, 27 May 2020 20:13:57 +0300 Subject: [PATCH] rand: cleanup of rand_f32xxx and rand_f64xxx functions --- vlib/rand/rand.v | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/vlib/rand/rand.v b/vlib/rand/rand.v index c6d478766a..9600f6fc57 100644 --- a/vlib/rand/rand.v +++ b/vlib/rand/rand.v @@ -1,9 +1,12 @@ // Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved. // Use of this source code is governed by an MIT license // that can be found in the LICENSE file. - module rand +const ( + max_i32 = 2147483647 +) + fn C.rand() int pub fn seed(s int) { @@ -26,22 +29,22 @@ pub fn rand_r(seed &int) int { // rand_f32 return a random f32 between 0 and max pub fn rand_f32(max f32) f32 { - return f32( f64(C.rand()) / ( f64(C.RAND_MAX)/f64(max) ) ) + return f32(f64(C.rand()) / f64(C.RAND_MAX) * f64(max)) } // rand_f32 return a random f32 in range min and max -pub fn rand_f32_in_range(min f32, max f32) f32 { - scaled_r := f32(rand.next( 2147483647 )) / 2147483647.0 - return min + scaled_r * (max - min ) +pub fn rand_f32_in_range(min, max f32) f32 { + scaled_r := f32(next(max_i32)) / max_i32 + return min + scaled_r * (max - min) } // rand_f64 return a random f64 between 0 and max pub fn rand_f64(max f32) f32 { - return f64(C.rand()) / ( f64(C.RAND_MAX)/f64(max) ) + return f64(C.rand()) / f64(C.RAND_MAX) * f64(max) } // rand_f64 return a random f64 in range min and max -pub fn rand_f64_in_range(min f64, max f64) f64 { - scaled_r := f64(rand.next( 2147483647 )) / 2147483647.0 - return min + scaled_r * (max - min ) -} \ No newline at end of file +pub fn rand_f64_in_range(min, max f64) f64 { + scaled_r := f64(next(max_i32)) / max_i32 + return min + scaled_r * (max - min) +}