Julia is a new programming language for scientific computing. From the Julia site:
Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. …
I just started playing around with it. I didn’t see functions for non-uniform random number generation so I wrote some as a way to get started.
[Update: there are non-uniform random number generators in Julia, but they have not been added to the documentation yet. See details in this comment.]
Here’s a random number generator for normal (Gaussian) random values:
## return a random sample from a normal (Gaussian) distribution function rand_normal(mean, stdev) if stdev <= 0.0 error("standard deviation must be positive") end u1 = rand() u2 = rand() r = sqrt( -2.0*log(u1) ) theta = 2.0*pi*u2 mean + stdev*r*sin(theta) end
From this you can see Julia is a low-ceremony language: Python-like syntax, you can call common mathematical functions without having to do anything special, etc. You can have explicit
return statements, but the preferred style seems to be to let the last line of the function be the implicit return statement.
My most common mistake so far has been forgetting to close code blocks with
end; Julia’s syntax is similar enough to Python that I suppose I think indentation should be sufficient.
I’ve written random number generators for the following probability distributions:
- Chi square
- Inverse gamma
- Laplace (double exponential)
- Student t
You can find the code here: Non-uniform random number generation in Julia.