now using rand() / (RAND_MAX+1) to avoid black dots

was caused by cos_sampled_w being 0 when rand() / (RAND_MAX) returned 1
to Lambertian::sample_f(), which caused Pa_next to be 0 and an S
somewhere to become #INF