mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
rand: refactor rand.v and random_numbers_test.v
This commit is contained in:
@ -3,10 +3,6 @@
|
||||
// that can be found in the LICENSE file.
|
||||
module rand
|
||||
|
||||
const (
|
||||
max_i32 = 2147483647
|
||||
)
|
||||
|
||||
fn C.rand() int
|
||||
|
||||
pub fn seed(s int) {
|
||||
@ -29,22 +25,30 @@ 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 rand_uniform_f32() * max
|
||||
}
|
||||
|
||||
// rand_f32 return a random f32 in range min and max
|
||||
pub fn rand_f32_in_range(min, max f32) f32 {
|
||||
scaled_r := f32(next(max_i32)) / max_i32
|
||||
return min + scaled_r * (max - min)
|
||||
return min + rand_uniform_f32() * (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)
|
||||
// rand_f64 return a random f64 between 0 (inclusive) and max (exclusive)
|
||||
pub fn rand_f64(max f64) f64 {
|
||||
return rand_uniform_f64() * max
|
||||
}
|
||||
|
||||
// rand_f64 return a random f64 in range min and max
|
||||
// rand_f64 return a random f64 in range min (inclusive) and max (exclusive)
|
||||
pub fn rand_f64_in_range(min, max f64) f64 {
|
||||
scaled_r := f64(next(max_i32)) / max_i32
|
||||
return min + scaled_r * (max - min)
|
||||
return min + rand_uniform_f64() * (max - min)
|
||||
}
|
||||
|
||||
// rand_uniform_f32 returns a uniformly distributed f32 in the range 0 (inclusive) and 1 (exclusive)
|
||||
pub fn rand_uniform_f32() f32 {
|
||||
return f32(C.rand()) / f32(C.RAND_MAX)
|
||||
}
|
||||
|
||||
// rand_uniform_f64 returns a uniformly distributed f64 in the range 0 (inclusive) and 1 (exclusive)
|
||||
pub fn rand_uniform_f64() f64 {
|
||||
return f64(C.rand()) / f64(C.RAND_MAX)
|
||||
}
|
Reference in New Issue
Block a user