Summary: This patch improves the implementation of the standard `rand()` function by implementing it in terms of the xorshift64star pRNG as described in https://en.wikipedia.org/wiki/Xorshift#xorshift*. This is a good, general purpose random number generator that is sufficient for most applications that do not require an extremely long period. This patch also correctly initializes the seed to be `1` as described by the standard. We also increase the `RAND_MAX` value to be `INT_MAX` as the standard only specifies that it can be larger than 32768.
23 lines
644 B
C
23 lines
644 B
C
//===-- Definition of macros to be used with stdlib functions ----------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef __LLVM_LIBC_MACROS_STDLIB_MACROS_H
|
|
#define __LLVM_LIBC_MACROS_STDLIB_MACROS_H
|
|
|
|
#ifndef NULL
|
|
#define __need_NULL
|
|
#include <stddef.h>
|
|
#endif // NULL
|
|
|
|
#define EXIT_SUCCESS 0
|
|
#define EXIT_FAILURE 1
|
|
|
|
#define RAND_MAX 2147483647
|
|
|
|
#endif // __LLVM_LIBC_MACROS_STDLIB_MACROS_H
|