在floatA和floatB之间获取随机浮点数的最佳方法是什么?

Tha*_*nks 6 iphone cocoa-touch objective-c

我有一个由两个浮点数组成的区间,需要在两个浮点数定义的区间之间的某个区域生成20个随机数.

让我们说,例如:

float a = 12.49953f
float b = 39.11234f
float r = //best way to get best randomly numbers between a and b
Run Code Online (Sandbox Code Playgroud)

随机数可以是== a和== b.你会建议什么?我知道所有计算机和语言都存在随机数问题,并且有很多方法可以生成它们.但我没有目标c的经验.

非常重要的是,在循环中生成的20个数字的一​​个块中生成的数字不相同.我想为此我会创建一个方法,将数字放在一个数组中,并检查生成的数字是否与数组中的所有其他数字不同,如果不是,我会生成另一个.

我试过这个:

CGFloat r = 1 + arc4random()%5;

但这只会产生整数,大部分时间我会得到相同随机数的2倍.

oxi*_*gen 5

试试这个

float a = 12.49953f;
float b = 39.11234f;
int startVal = a*10000;
int endVal = b*10000; 

srandom((unsigned)(mach_absolute_time() & 0xFFFFFFFF));
int randomValue = startVal+ (random() % (endVal - startVal));

float r = (float)randomValue / 10000.0f; 
Run Code Online (Sandbox Code Playgroud)