gsl has helped me liberate myself from the clutches of MATLAB. if you are in academics then i strongly urge you to use open source libraries whenever where ever possible. there are both practical as well as philosophical reasons for this. any ways, end of rant and now onto the topic of this post.
both gsl_rng_uniform() and gsl_rng_uniform_pos() generate random numbers between 0 and 1 while the former includes 0 the latter excludes it and both of them exclude 1. now why is it that it does not generate 1.0 ? probably numbers as high as 0.9999 might be good approximation to 1.0 in which case there is no practical difficulty.