Skip to content

Commit 02a3b61

Browse files
committed
lfortran_intrinsics.c: Fix random_number()
1 parent cac71d1 commit 02a3b61

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

src/libasr/runtime/lfortran_intrinsics.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1884,13 +1884,22 @@ LFORTRAN_API double _lfortran_time()
18841884
#endif
18851885
}
18861886

1887+
bool lfortran_rand_seed = true;
18871888
LFORTRAN_API void _lfortran_sp_rand_num(float *x) {
1888-
srand(time(0));
1889+
if (lfortran_rand_seed) {
1890+
srand((unsigned int)clock());
1891+
rand();
1892+
lfortran_rand_seed = false;
1893+
}
18891894
*x = rand() / (float) RAND_MAX;
18901895
}
18911896

18921897
LFORTRAN_API void _lfortran_dp_rand_num(double *x) {
1893-
srand(time(0));
1898+
if (lfortran_rand_seed) {
1899+
srand((unsigned int)clock());
1900+
rand();
1901+
lfortran_rand_seed = false;
1902+
}
18941903
*x = rand() / (double) RAND_MAX;
18951904
}
18961905

0 commit comments

Comments
 (0)