COLORED_NOISE is a C library which generates sequences that simulate 1/f^alpha power law noise. This includes white noise (alpha = 0), pink noise (alpha = 1) and brown noise or Brownian motion (alpha = 2), but also values of alpha between 0 and 2.
The original code listing by Kasdin referenced a number of functions from the Numerical Recipes library (FOUR1, FREE_VECTOR, GASDEV, RAN1, REALFT, VECTOR). Numerical Recipes is a proprietary library whose components cannot be freely distributed. Moreover, the referenced functions have some peculiarities of implementation (the FFT is not normalized; the FFT data must be a power of 2 in order; the code uses single precision real arithmetic).
In the code presented here, references to Numerical Recipes functions have been replaced by references to, and the source code of, nonproprietary code. In particular, the Fourier transform is implemented by a "slow Fourier transform" method, and by simple uniform and normal random number generators. You are welcome to make an efficient code by replacing these routines. The purpose of this posting is primarily to demonstrate the method.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
COLORED_NOISE is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.
BLACK_SCHOLES, a C library which implements some simple approaches to the Black-Scholes option valuation theory, by Desmond Higham.
CNOISE, a C library which generates samples of noise obeying a 1/f^alpha power law, by Miroslav Stoyanov.
CORRELATION, a C library which contains examples of statistical correlation functions.
NORMAL, a C library which computes elements of a sequence of pseudorandom normally distributed values.
ORNSTEIN_UHLENBECK, a C library which approximates solutions of the Ornstein-Uhlenbeck stochastic differential equation (SDE) using the Euler method and the Euler-Maruyama method.
PINK_NOISE, a C library which computes a "pink noise" signal obeying a 1/f power law.
SDE, a C library which illustrates the properties of stochastic differential equations (SDE's), and common algorithms for their analysis, by Desmond Higham;
SFTPACK, a C library which implements the "slow" Fourier transform, intended as a teaching tool and comparison with the fast Fourier transform.
STOCHASTIC_RK, a C library which applies a Runge-Kutta scheme to a stochastic differential equation.
UNIFORM, a C library which computes elements of a uniform pseudorandom sequence.
ALPHA is a sequence of 9 sets of data, for ALPHA = 0.00 to ALPHA = 2.00, each time computing a sequence of 128 values, and using the same sequence of random numbers. This makes the effect of ALPHA very clear.
You can go up one level to the C source codes.