如何在Objective-C中创建随机浮点数?

Rom*_*man 33 random floating-point objective-c

我正在尝试在Objective-C中创建0.15到0.3之间的随机浮点数.以下代码始终返回1:

int randn = (random() % 15)+15;
float pscale = (float)randn / 100;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 64

这是一个功能

- (float)randomFloatBetween:(float)smallNumber and:(float)bigNumber {
    float diff = bigNumber - smallNumber;
    return (((float) (arc4random() % ((unsigned)RAND_MAX + 1)) / RAND_MAX) * diff) + smallNumber;
}
Run Code Online (Sandbox Code Playgroud)

  • #define boris_random(smallNumber, bigNumber) (((((float) (arc4random() % ((unsigned)RAND_MAX + 1)) / RAND_MAX) * (bigNumber - smallNumber)) + smallNumber) (14认同)

Cal*_*ain 20

试试这个:

 (float)rand() / RAND_MAX
Run Code Online (Sandbox Code Playgroud)

或者在0到5之间得到一个:

 float randomNum = ((float)rand() / RAND_MAX) * 5;
Run Code Online (Sandbox Code Playgroud)

有几种方法可以做同样的事情.

  • 这是错的.`random()/ RAND_MAX`不会给你一个浮点值,因为这两个值都不是浮点数.此外,`random()`的域不是0到RAND_MAX.`rand()`和`rand_r()`的域名是.所以你应该使用:`(float)rand()/ RAND_MAX`来获得预期的结果. (20认同)
  • 你们知道你可以编辑答案,对吗? (19认同)