libc: Add rand() + srand()
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Very basic random number generator, but that's what rand() is. If you want secure numbers then use arc4random() or something idk
This commit is contained in:
parent
d9b7e8edc0
commit
a0b45a51de
@ -29,6 +29,8 @@ typedef struct
|
||||
|
||||
#define MB_CUR_MAX 4
|
||||
|
||||
#define RAND_MAX 32767
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
@ -91,8 +93,11 @@ extern "C"
|
||||
* endptr if nonnull. */
|
||||
unsigned long strtoul(const char* str, char** endptr, int base);
|
||||
|
||||
/* Return the next pseudorandom number. */
|
||||
int rand();
|
||||
void srand(int);
|
||||
|
||||
/* Set the pseudorandom number generator's seed, which will determine the sequence of numbers returned by rand(). */
|
||||
void srand(unsigned int seed);
|
||||
|
||||
/* Exit the program normally, performing any registered cleanup actions. */
|
||||
__noreturn void exit(int status);
|
||||
|
@ -205,4 +205,17 @@ extern "C"
|
||||
{
|
||||
c_quicksort(base, nmemb, size, compar);
|
||||
}
|
||||
|
||||
static unsigned next = 42;
|
||||
|
||||
int rand()
|
||||
{
|
||||
next = next * 1103515245 + 12345;
|
||||
return (int)((unsigned)(next / 65536) % 32768);
|
||||
}
|
||||
|
||||
void srand(unsigned int seed)
|
||||
{
|
||||
next = seed;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user