Skip to content

Commit 66bcf26

Browse files
committed
Implement random.randrange()
1 parent 1875423 commit 66bcf26

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

src/runtime/impure/lfortran_intrinsics.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ LFORTRAN_API float _lfortran_random_float()
3535
return ((float) rand() / (float) RAND_MAX);
3636
}
3737

38+
LFORTRAN_API int _lfortran_randrange(int lower, int upper)
39+
{
40+
int rr = lower + (rand() % (upper - lower));
41+
return rr;
42+
}
43+
3844
LFORTRAN_API int _lfortran_random_int(int lower, int upper)
3945
{
4046
int randint = lower + (rand() % (upper - lower + 1));

src/runtime/impure/lfortran_intrinsics.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ typedef double _Complex double_complex_t;
3232
LFORTRAN_API double _lfortran_sum(int n, double *v);
3333
LFORTRAN_API void _lfortran_random_number(int n, double *v);
3434
LFORTRAN_API float _lfortran_random_float();
35+
LFORTRAN_API int _lfortran_randrange(int lower, int upper);
3536
LFORTRAN_API int _lfortran_random_int(int lower, int upper);
3637
LFORTRAN_API void _lfortran_printf(const char* format, ...);
3738
LFORTRAN_API void _lfortran_complex_add(struct _lfortran_complex* a,

src/runtime/random.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ def random() -> f64:
1111
def _lfortran_random_float() -> f64:
1212
pass
1313

14+
def randrange(lower: i32, upper: i32) -> i32:
15+
"""
16+
Return a random integer N such that `lower <= N < upper`.
17+
"""
18+
return _lfortran_randrange(lower, upper)
19+
20+
@ccall
21+
def _lfortran_randrange(lower: i32, upper: i32) -> i32:
22+
pass
23+
1424
def randint(lower: i32, upper: i32) -> i32:
1525
"""
1626
Return a random integer N such that `lower <= N <= upper`.

0 commit comments

Comments
 (0)