uint32_t linear_congruential_generator(uint32_t s_seed)
{
return ((int)((((uint64_t)s_seed) * ((uint64_t)0x10A860C1 /* 279470273 */)) % ((uint64_t)0xFFFFFFFB /* 1<<32 - 5 */)));
}
#define def_rand_max (~((uint32_t)0u))
#define def_rand_const_i ((uint32_t)1u) /* 또는 time((time_t)0u) */
#define def_rand_const_a ((uint32_t)1103515245u) /* 또는 22695477 */
#define def_rand_const_c ((uint32_t)12345u) /* 또는 1 */
static uint32_t g_rand_value = def_rand_const_i ;
int hwport_rand(void)
{
g_rand_value = (g_rand_value * def_rand_const_a) + def_rand_const_c ;
return (int)(g_rand_value >> 16) & def_rand_max; /* 또는 (((g_rand_value >> 16) | (g_rand_value << 16)) >> 1) */
}
void hwport_srand(unsigned int s_seed)
{
g_rand_value = (uint32_t)s_seed;
}
Pie_by_MonteCarloMethod.tar.gz (1.5 KB)
https://en.wikipedia.org/wiki/Random_number_generation
https://en.wikipedia.org/wiki/Middle-square_method
https://en.wikipedia.org/wiki/Linear_congruential_generator
https://en.wikipedia.org/wiki/Mersenne_Twister
https://en.wikipedia.org/wiki/Xorshift
https://en.wikipedia.org/wiki/C%2B%2B11#Extensible_random_number_facility
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
https://namu.wiki/w/%EB%82%9C%EC%88%98%EC%83%9D%EC%84%B1
http://www.gamedevforever.com/114
http://m.blog.naver.com/bestheroz/110314886
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/earticles.html