Index: libcfa/src/concurrency/thread.cfa
===================================================================
--- libcfa/src/concurrency/thread.cfa	(revision 250583e1d4182a47696d102674000af3f44b3644)
+++ libcfa/src/concurrency/thread.cfa	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 13 20:11:55 2022
-// Update Count     : 42
+// Last Modified On : Sat Jan 15 14:34:58 2022
+// Update Count     : 45
 //
 
@@ -179,5 +179,9 @@
 	GENERATOR( active_thread()->random_state );
 } // set_seed
-uint32_t prng( void ) { return GENERATOR( active_thread()->random_state ); } // [0,UINT_MAX]
+
+uint32_t prng( void ) {									// [0,UINT_MAX]
+	uint32_t & state = active_thread()->random_state;
+	return GENERATOR( state );
+} // prng
 
 // Local Variables: //
Index: libcfa/src/concurrency/thread.hfa
===================================================================
--- libcfa/src/concurrency/thread.hfa	(revision 250583e1d4182a47696d102674000af3f44b3644)
+++ libcfa/src/concurrency/thread.hfa	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan  6 16:40:16 2022
-// Update Count     : 7
+// Last Modified On : Wed Feb  9 22:10:14 2022
+// Update Count     : 14
 //
 
@@ -130,4 +130,11 @@
 T & join( T & this );
 
+//----------
+static inline {
+	uint32_t prng( thread$ & th ) __attribute__(( warn_unused_result )) { return LCG( th.random_state ); } // [0,UINT_MAX]
+	uint32_t prng( thread$ & th, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( th ) % u; } // [0,u)
+	uint32_t prng( thread$ & th, uint32_t l, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( th, u - l + 1 ) + l; } // [l,u]
+} // prng
+
 // Local Variables: //
 // mode: c //
