Skip to content

Commit 114a341

Browse files
rand: simplify rand.PRNG, move to optional types for error handling (#13570)
1 parent 5c0b7b0 commit 114a341

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+609
-1586
lines changed

cmd/tools/bench/wyhash.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ fn main() {
1616
mut bgenerating := benchmark.start()
1717
mut bytepile := []byte{}
1818
for _ in 0 .. sample_size * max_str_len {
19-
bytepile << byte(rand.int_in_range(40, 125))
19+
bytepile << byte(rand.int_in_range(40, 125) or { 40 })
2020
}
2121
mut str_lens := []int{}
2222
for _ in 0 .. sample_size {
23-
str_lens << rand.int_in_range(min_str_len, max_str_len)
23+
str_lens << rand.int_in_range(min_str_len, max_str_len) or { min_str_len }
2424
}
2525
bgenerating.measure('generating strings')
2626
println('Hashing each of the generated strings...')

cmd/tools/fuzz/map_fuzz.v

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ fn generate_strings(str_len int, arr_len int) []string {
1010
}
1111

1212
fn fuzz1() {
13-
amount := 200000 - rand.intn(100000)
14-
amount2 := 200000 - rand.intn(100000)
15-
len := 25 - rand.intn(10)
13+
amount := 200000 - rand.intn(100000) or { 0 }
14+
amount2 := 200000 - rand.intn(100000) or { 0 }
15+
len := 25 - rand.intn(10) or { 0 }
1616
arr := generate_strings(len, amount)
1717
arr2 := generate_strings(len, amount2)
1818
mut m := map[string]int{}
@@ -34,8 +34,8 @@ fn fuzz1() {
3434

3535
fn fuzz2() {
3636
mut m := map[string]int{}
37-
amount := rand.intn(500000) + 1
38-
len := 25 - rand.intn(10)
37+
amount := rand.intn(500000) or { 0 } + 1
38+
len := 25 - rand.intn(10) or { 0 }
3939
arr := generate_strings(len, amount)
4040
for i, x in arr {
4141
m[x] = i
@@ -54,8 +54,8 @@ fn fuzz2() {
5454

5555
fn fuzz3() {
5656
mut m := map[string]int{}
57-
amount := rand.intn(500000) + 1
58-
len := 25 - rand.intn(10)
57+
amount := rand.intn(500000) or { 0 } + 1
58+
len := 25 - rand.intn(10) or { 0 }
5959
arr := generate_strings(len, amount)
6060
for i, x in arr {
6161
if (i % 10000) == 0 {
@@ -74,8 +74,8 @@ fn fuzz3() {
7474
}
7575

7676
fn fuzz4() {
77-
amount := rand.intn(500000)
78-
len := 25 - rand.intn(10)
77+
amount := rand.intn(500000) or { 0 }
78+
len := 25 - rand.intn(10) or { 0 }
7979
arr := generate_strings(len, amount)
8080
mut m := map[string]int{}
8181
for i in 0 .. amount {
@@ -93,7 +93,7 @@ fn fuzz4() {
9393
}
9494

9595
fn fuzz5() {
96-
amount := rand.intn(500000) + 1
96+
amount := rand.intn(500000) or { 0 } + 1
9797
arr := generate_strings(20, amount)
9898
mut m := map[string]int{}
9999
for i in 0 .. amount {
@@ -114,8 +114,8 @@ fn fuzz5() {
114114

115115
fn fuzz6() {
116116
mut m := map[string]int{}
117-
amount := rand.intn(500000) + 1
118-
len := 25 - rand.intn(10)
117+
amount := rand.intn(500000) or { 0 } + 1
118+
len := 25 - rand.intn(10) or { 0 }
119119
arr := generate_strings(len, amount)
120120
for i, x in arr {
121121
m[x]++

examples/2048/2048.v

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -390,10 +390,11 @@ fn (mut b Board) place_random_tile() (Pos, int) {
390390
}
391391
}
392392
if empty_tiles_max > 0 {
393-
new_random_tile_index := rand.intn(empty_tiles_max)
393+
new_random_tile_index := rand.intn(empty_tiles_max) or { 0 }
394394
empty_pos := etiles[new_random_tile_index]
395395
// 10% chance of getting a `4` tile
396-
random_value := if rand.f64n(1.0) < 0.9 { 1 } else { 2 }
396+
value := rand.f64n(1.0) or { 0.0 }
397+
random_value := if value < 0.9 { 1 } else { 2 }
397398
b.field[empty_pos.y][empty_pos.x] = random_value
398399
return empty_pos, random_value
399400
}
@@ -465,7 +466,7 @@ fn (mut app App) ai_move() {
465466
cboard.place_random_tile()
466467
mut cmoves := 0
467468
for !cboard.is_game_over() {
468-
nmove := possible_moves[rand.intn(possible_moves.len)]
469+
nmove := possible_moves[rand.intn(possible_moves.len) or { 0 }]
469470
cboard, is_valid = cboard.move(nmove)
470471
if !is_valid {
471472
continue

examples/fireworks/fireworks.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn on_frame(mut app App) {
3232
}
3333

3434
// chance of firing new rocket
35-
if rand.intn(30) == 0 {
35+
if rand.intn(30) or { 0 } == 0 {
3636
app.rockets << objects.new_rocket()
3737
}
3838
// simulating rockets

examples/fireworks/modules/objects/color.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import rand
55

66
pub fn random_color() gx.Color {
77
return gx.Color{
8-
r: byte(rand.int_in_range(0, 256))
9-
g: byte(rand.int_in_range(0, 256))
10-
b: byte(rand.int_in_range(0, 256))
8+
r: rand.byte()
9+
g: rand.byte()
10+
b: rand.byte()
1111
}
1212
}

examples/fireworks/modules/objects/rocket.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ pub fn new_rocket() Rocket {
5151
return Rocket{
5252
color: random_color()
5353
pos: Vector{
54-
x: rand.f32_in_range(50, get_params().width - 50)
54+
x: rand.f32_in_range(50, get_params().width - 50) or { 50 }
5555
}
5656
vel: Vector{
57-
x: rand.f32_in_range(-1.5, 1.5)
58-
y: rand.f32_in_range(5, 7)
57+
x: rand.f32_in_range(-1.5, 1.5) or { -1.5 }
58+
y: rand.f32_in_range(5, 7) or { 5 }
5959
}
6060
}
6161
}

examples/fireworks/modules/objects/vector.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub fn (vector Vector) mult(scalar f32) Vector {
1818
}
1919

2020
pub fn random_vector_in_circle() Vector {
21-
theta := rand.f32n(2 * math.pi)
21+
theta := rand.f32n(2 * math.pi) or { 0 }
2222
y := rand.f32()
2323

2424
return Vector{

examples/gg/stars.v

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,22 @@ fn main() {
6060
user_data: app
6161
)
6262
for i in 0 .. max_stars {
63-
app.stars[i].x = rand.f32_in_range(-200.0, 200.0)
64-
app.stars[i].y = rand.f32_in_range(-200.0, 200.0)
65-
app.stars[i].z = rand.f32_in_range(-200.0, -100.0)
66-
app.stars[i].r = rand.f32_in_range(0.1, 1.0)
67-
app.stars[i].g = rand.f32_in_range(0.1, 1.0)
68-
app.stars[i].b = rand.f32_in_range(0.1, 1.0)
63+
app.stars[i].x = rand.f32_in_range(-200.0, 200.0) or { -200.0 }
64+
app.stars[i].y = rand.f32_in_range(-200.0, 200.0) or { -200.0 }
65+
app.stars[i].z = rand.f32_in_range(-200.0, -100.0) or { -200.0 }
66+
app.stars[i].r = rand.f32_in_range(0.1, 1.0) or { 0.1 }
67+
app.stars[i].g = rand.f32_in_range(0.1, 1.0) or { 0.1 }
68+
app.stars[i].b = rand.f32_in_range(0.1, 1.0) or { 0.1 }
6969
}
7070
for i in 0 .. max_v_letters {
71-
app.v_letters[i].x = rand.f32_in_range(-20.0, 20.0)
72-
app.v_letters[i].y = rand.f32_in_range(-20.0, 20.0)
73-
app.v_letters[i].z = rand.f32_in_range(-5.0, -1.0)
74-
app.v_letters[i].w = rand.f32_in_range(5, 20)
71+
app.v_letters[i].x = rand.f32_in_range(-20.0, 20.0) or { -20.0 }
72+
app.v_letters[i].y = rand.f32_in_range(-20.0, 20.0) or { -20.0 }
73+
app.v_letters[i].z = rand.f32_in_range(-5.0, -1.0) or { -5.0 }
74+
app.v_letters[i].w = rand.f32_in_range(5, 20) or { 5 }
7575
app.v_letters[i].h = app.v_letters[i].w
76-
app.v_letters[i].angle = rand.f32_in_range(0, 6.283184)
77-
app.v_letters[i].dangle = rand.f32_in_range(-0.05, 0.05)
78-
app.v_letters[i].dz = rand.f32_in_range(-0.1, -0.01)
76+
app.v_letters[i].angle = rand.f32_in_range(0, 6.283184) or { 0 }
77+
app.v_letters[i].dangle = rand.f32_in_range(-0.05, 0.05) or { -0.05 }
78+
app.v_letters[i].dz = rand.f32_in_range(-0.1, -0.01) or { -0.1 }
7979
}
8080
app.gg.run()
8181
}
@@ -102,9 +102,9 @@ fn (mut app App) draw() {
102102
sgl.v3f_c3f(s.x, s.y, s.z, s.r, s.g, s.b)
103103
app.stars[i].z += 0.3
104104
if app.stars[i].z > -1.0 {
105-
app.stars[i].x = rand.f32_in_range(-200.0, 200.0)
106-
app.stars[i].y = rand.f32_in_range(-200.0, 200.0)
107-
app.stars[i].z = rand.f32_in_range(-200.0, -100.0)
105+
app.stars[i].x = rand.f32_in_range(-200.0, 200.0) or { -200.0 }
106+
app.stars[i].y = rand.f32_in_range(-200.0, 200.0) or { -200.0 }
107+
app.stars[i].z = rand.f32_in_range(-200.0, -100.0) or { -200.0 }
108108
}
109109
}
110110
sgl.end()
@@ -119,15 +119,15 @@ fn (mut app App) draw() {
119119
app.v_letters[i].z += app.v_letters[i].dz
120120
app.v_letters[i].angle += app.v_letters[i].dangle
121121
if app.v_letters[i].z > -60.0 {
122-
app.v_letters[i].x += rand.f32_in_range(-0.05, 0.05)
123-
app.v_letters[i].y += rand.f32_in_range(-0.05, 0.05)
122+
app.v_letters[i].x += rand.f32_in_range(-0.05, 0.05) or { -0.05 }
123+
app.v_letters[i].y += rand.f32_in_range(-0.05, 0.05) or { -0.05 }
124124
}
125125
if app.v_letters[i].z < -95.0 {
126126
app.v_letters[i].h *= 0.8
127127
app.v_letters[i].w *= 0.8
128128
}
129129
if app.v_letters[i].z < -100.0 {
130-
app.v_letters[i].z = rand.f32_in_range(-5.0, -1.0)
130+
app.v_letters[i].z = rand.f32_in_range(-5.0, -1.0) or { -5.0 }
131131
app.v_letters[i].h = 10.0
132132
app.v_letters[i].w = 10.0
133133
}

examples/quick_sort.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const (
88
fn main() {
99
mut arr := []int{}
1010
for _ in 0 .. gen_len {
11-
arr << rand.intn(gen_max)
11+
arr << rand.intn(gen_max) or { 0 }
1212
}
1313
println('length of random array is $arr.len')
1414
println('before quick sort whether array is sorted: ${is_sorted<int>(arr)}')

examples/rule110.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn main() {
3333

3434
mut generation_bin := []int{len: n}
3535
for i in 0 .. n {
36-
generation_bin[i] = rand.intn(2)
36+
generation_bin[i] = rand.intn(2) or { 0 }
3737
}
3838
print('\n')
3939

0 commit comments

Comments
 (0)