diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
index 5910c42946aa90f9f400c86102a19f2a9540e878..239fc68551c53a295d799102470b10fb861c069a 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
@@ -19,6 +19,7 @@
 
 #include "olm_jni_helper.h"
 #include "olm/olm.h"
+#include <sys/time.h>
 
 using namespace AndroidOlmSdk;
 
@@ -31,6 +32,8 @@ using namespace AndroidOlmSdk;
 bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize)
 {
     bool retCode = false;
+    struct timeval timeValue;
+
     if(NULL == aBuffer2Ptr)
     {
         LOGE("## setRandomInBuffer(): failure - aBuffer=NULL");
@@ -47,10 +50,14 @@ bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize)
     {
         LOGD("## setRandomInBuffer(): randomSize=%lu",static_cast<long unsigned int>(aRandomSize));
 
-        srand(time(NULL)); // init seed
+        gettimeofday(&timeValue, NULL);
+        srand(timeValue.tv_usec); // init seed
+
         for(size_t i=0;i<aRandomSize;i++)
         {
             (*aBuffer2Ptr)[i] = (uint8_t)(rand()%ACCOUNT_CREATION_RANDOM_MODULO);
+            // debug purpose
+            //LOGD("## setRandomInBuffer(): randomBuffPtr[%ld]=%d",i, (*aBuffer2Ptr)[i]);
         }
 
         retCode = true;