Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rand Implementation

Tags:

c

random

gcc

I would like to go through how rand() and srand() functions are implemented and would like to tweak the code to modify it to my requirements. Where can i find the source code of rand() and srand().

like image 951
nikhil Avatar asked Jan 22 '11 13:01

nikhil


People also ask

How is random function implemented?

We commonly use random() function to create random numbers in C++. The use of void srand (unsigned int seed) would improve the results since it would generate random numbers depending on the value of seed.

How does rand() function work?

Description. RAND returns an evenly distributed random real number greater than or equal to 0 and less than 1. A new random real number is returned every time the worksheet is calculated. Note: As of Excel 2010, Excel uses the Mersenne Twister algorithm (MT19937) to generate random numbers.


1 Answers

rand and srand are usually implemented as a simple LCG, you can easily write your own (it's few lines of code) without looking for the sources of rand and srand. Notice that, if you need random numbers for "serious" purposes (e.g. cryptography), there are much better RNGs than LCG.

By the way, the C standard itself includes a sample implementation of rand and srand:

static unsigned long int next = 1;

int rand(void) // RAND_MAX assumed to be 32767
{
    next = next * 1103515245 + 12345;
    return (unsigned int)(next/65536) % 32768;
}

void srand(unsigned int seed)
{
    next = seed;
}
like image 126
Matteo Italia Avatar answered Sep 27 '22 20:09

Matteo Italia