Changes in libcfa/src/stdlib.hfa [1959528:2210cfc]
- File:
-
- 1 edited
-
libcfa/src/stdlib.hfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
r1959528 r2210cfc 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jan 12 09:09:48 202213 // Update Count : 6 2012 // Last Modified On : Mon Jan 10 17:03:18 2022 13 // Update Count : 619 14 14 // 15 15 … … 386 386 //--------------------------------------- 387 387 388 // Sequential Pseudo Random-Number Generator : generate repeatable sequence of values that appear random.389 //390 // Declaration :391 // PRNG sprng = { 1009 } - set starting seed versus random seed392 //393 // Interface :394 // set_seed( sprng, 1009 ) - set starting seed for ALL kernel threads versus random seed395 // get_seed( sprng ) - read seed396 // prng( sprng ) - generate random value in range [0,UINT_MAX]397 // prng( sprng, u ) - generate random value in range [0,u)398 // prng( sprng, l, u ) - generate random value in range [l,u]399 // calls( sprng ) - number of generated random value so far400 //401 // Examples : generate random number between 5-21402 // prng( sprng ) % 17 + 5; values 0-16 + 5 = 5-21403 // prng( sprng, 16 + 1 ) + 5;404 // prng( sprng, 5, 21 );405 // calls( sprng );406 407 388 struct PRNG { 408 389 uint32_t callcnt; // call count … … 411 392 }; // PRNG 412 393 413 void set_seed( PRNG & prng, uint32_t seed_ );414 394 uint32_t prng( PRNG & prng ) __attribute__(( warn_unused_result )); // [0,UINT_MAX] 415 395 static inline { 396 void set_seed( PRNG & prng, uint32_t seed_ ) with( prng ) { state = seed = seed_; } // set seed 416 397 void ?{}( PRNG & prng ) { set_seed( prng, rdtscl() ); } // random seed 417 398 void ?{}( PRNG & prng, uint32_t seed ) { set_seed( prng, seed ); } // fixed seed … … 422 403 } // distribution 423 404 424 // Concurrent Pseudo Random-Number Generator : generate repeatable sequence of values that appear random.425 //426 // Interface :427 // set_seed( 1009 ) - fixed seed for all kernel threads versus random seed428 // get_seed() - read seed429 // prng() - generate random value in range [0,UINT_MAX]430 // prng( u ) - generate random value in range [0,u)431 // prng( l, u ) - generate random value in range [l,u]432 //433 // Examples : generate random number between 5-21434 // prng() % 17 + 5; values 0-16 + 5 = 5-21435 // prng( 16 + 1 ) + 5;436 // prng( 5, 21 );437 438 405 void set_seed( uint32_t seed_ ) OPTIONAL_THREAD; 439 uint32_t get_seed() __attribute__(( warn_unused_result )) OPTIONAL_THREAD;406 uint32_t get_seed() __attribute__(( warn_unused_result )); 440 407 uint32_t prng( void ) __attribute__(( warn_unused_result )) OPTIONAL_THREAD; // [0,UINT_MAX] 441 408 static inline {
Note:
See TracChangeset
for help on using the changeset viewer.