diff --git a/alib2std/src/extensions/init.cpp b/alib2std/src/extensions/init.cpp
index ba080469943fc36b80cfacd2f61c0abbe90c2972..53e84005f502c4066a7f47cf280b372636109b20 100644
--- a/alib2std/src/extensions/init.cpp
+++ b/alib2std/src/extensions/init.cpp
@@ -17,7 +17,7 @@ Init::Init ( ) : clog_fdaccessor ( CLOG_FD, CERR_FD ), clog_fdstreambuf ( clog_f
 	std::clog.rdbuf ( & clog_fdstreambuf );
 	std::clog.clear ( );
 
-	ext::random_devices::semirandom.seed ( ext::random_devices::random ( ) );
+	ext::random_devices::getSemirandom ( ).seed ( ext::random_devices::getRandom ( ) ( ) );
 }
 
 Init::~Init ( ) {
diff --git a/alib2std/src/extensions/random.cpp b/alib2std/src/extensions/random.cpp
index 941eae43599bbedb76ee5acf56cbc5f0d3771cb3..4a78705ae8e917a8e3c149249ff2f82df6e509d8 100644
--- a/alib2std/src/extensions/random.cpp
+++ b/alib2std/src/extensions/random.cpp
@@ -9,7 +9,7 @@
 
 namespace ext {
 
-	std::random_device random_devices::random;
-	random_devices::semirandom_device random_devices::semirandom;
+	std::random_device & random_devices::random = getRandom ( );
+	random_devices::semirandom_device & random_devices::semirandom = getSemirandom ( );
 
 } /* namespace ext */
diff --git a/alib2std/src/extensions/random.hpp b/alib2std/src/extensions/random.hpp
index 81a5631934322a493fe1dde0db61df82430f4aab..88642fc06dd28b3061ab8faafe573bcbc429fce8 100644
--- a/alib2std/src/extensions/random.hpp
+++ b/alib2std/src/extensions/random.hpp
@@ -15,7 +15,12 @@ namespace ext {
 
 class random_devices {
 public:
-	static std::random_device random;
+	static std::random_device & getRandom ( ) {
+		static std::random_device res;
+		return res;
+	}
+
+	static std::random_device & random;
 
 private:
 	class semirandom_device {
@@ -47,7 +52,12 @@ private:
 		}
 	};
 public:
-	static semirandom_device semirandom;
+	static semirandom_device & getSemirandom ( ) {
+		static semirandom_device res;
+		return res;
+	}
+
+	static semirandom_device & semirandom;
 
 };