diff --git a/tests/fuzz/fuzz_client.c b/tests/fuzz/fuzz_client.c
index 2f439f5..b9cdddd 100644
--- a/tests/fuzz/fuzz_client.c
+++ b/tests/fuzz/fuzz_client.c
@@ -70,7 +70,7 @@
     ret = mbedtls_ctr_drbg_random(p_rng, output, output_len);
     for (i=0; i<output_len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( ret );
 }
@@ -85,7 +85,7 @@
     //ret = mbedtls_entropy_func(data, output, len);
     for (i=0; i<len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( 0 );
 }
@@ -182,7 +182,7 @@
     //There may be other options to add :
     // mbedtls_ssl_conf_cert_profile, mbedtls_ssl_conf_sig_hashes
 
-    srandom(1);
+    srand(1);
     mbedtls_ssl_conf_rng( &conf, dummy_random, &ctr_drbg );
 
     if( mbedtls_ssl_setup( &ssl, &conf ) != 0 )
diff --git a/tests/fuzz/fuzz_dtlsclient.c b/tests/fuzz/fuzz_dtlsclient.c
index 424af81..55cd43b 100644
--- a/tests/fuzz/fuzz_dtlsclient.c
+++ b/tests/fuzz/fuzz_dtlsclient.c
@@ -71,7 +71,7 @@
     ret = mbedtls_ctr_drbg_random(p_rng, output, output_len);
     for (i=0; i<output_len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( ret );
 }
@@ -86,7 +86,7 @@
     //ret = mbedtls_entropy_func(data, output, len);
     for (i=0; i<len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( 0 );
 }
@@ -121,7 +121,7 @@
     mbedtls_ctr_drbg_init( &ctr_drbg );
     mbedtls_entropy_init( &entropy );
 
-    srandom(1);
+    srand(1);
     if( mbedtls_ctr_drbg_seed( &ctr_drbg, dummy_entropy, &entropy,
                               (const unsigned char *) pers, strlen( pers ) ) != 0 )
         goto exit;
diff --git a/tests/fuzz/fuzz_dtlsserver.c b/tests/fuzz/fuzz_dtlsserver.c
index 6f31bfb..d50b0ad 100644
--- a/tests/fuzz/fuzz_dtlsserver.c
+++ b/tests/fuzz/fuzz_dtlsserver.c
@@ -72,7 +72,7 @@
     ret = mbedtls_ctr_drbg_random(p_rng, output, output_len);
     for (i=0; i<output_len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( ret );
 }
@@ -87,7 +87,7 @@
     //ret = mbedtls_entropy_func(data, output, len);
     for (i=0; i<len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( 0 );
 }
@@ -140,7 +140,7 @@
         goto exit;
 
 
-    srandom(1);
+    srand(1);
     mbedtls_ssl_conf_rng( &conf, dummy_random, &ctr_drbg );
 
 #if defined(MBEDTLS_X509_CRT_PARSE_C)
diff --git a/tests/fuzz/fuzz_server.c b/tests/fuzz/fuzz_server.c
index f8882dd..8d10c59 100644
--- a/tests/fuzz/fuzz_server.c
+++ b/tests/fuzz/fuzz_server.c
@@ -71,7 +71,7 @@
     ret = mbedtls_ctr_drbg_random(p_rng, output, output_len);
     for (i=0; i<output_len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( ret );
 }
@@ -86,7 +86,7 @@
     //ret = mbedtls_entropy_func(data, output, len);
     for (i=0; i<len; i++) {
         //replace result with pseudo random
-        output[i] = (unsigned char) random();
+        output[i] = (unsigned char) rand();
     }
     return( 0 );
 }
@@ -152,7 +152,7 @@
                                     MBEDTLS_SSL_PRESET_DEFAULT ) != 0 )
         goto exit;
 
-    srandom(1);
+    srand(1);
     mbedtls_ssl_conf_rng( &conf, dummy_random, &ctr_drbg );
 
 #if defined(MBEDTLS_X509_CRT_PARSE_C)
