C语言rand生成a,b之间随机实数

看到一个人说可以用(double)rand()/(RAND_MAX + 1)生成(0,1)之间的随机数,于是就把这个乘以(b-a)再加a得到a,b之间随机实数,结果发现有问题……

问题在这里:RAND_MAX + 1溢出啦,randmax是2147483647, 而 randmax + 1 : -2147483648

现在就会觉得这个+1是多么的画蛇添足,(double)rand()/RAND_MAX 就可以了嘛,要真想+1,可以加1.0,这样在做加法之前randmax就自动提升为double了

原文地址:https://www.cnblogs.com/fstang/p/2714371.html