我知道这是一个相当简单的问题,但我不太擅长数学.
我知道如何生成0到1之间的随机浮点数:
float random = ((float) rand()) / (float) RAND_MAX;
Run Code Online (Sandbox Code Playgroud)
例:
RandomFloat( 0.78, 4.5 ); //Could return 2.4124, 0.99, 4.1, etc.
Run Code Online (Sandbox Code Playgroud)
Wim*_*Wim 30
float RandomFloat(float a, float b) {
float random = ((float) rand()) / (float) RAND_MAX;
float diff = b - a;
float r = random * diff;
return a + r;
}
Run Code Online (Sandbox Code Playgroud)
这是通过返回a加的东西,其中一些是0到1之间b-a,这使得两者之间的最终结果谎言a和b.
float RandomFloat(float min, float max)
{
// this function assumes max > min, you may want
// more robust error checking for a non-debug build
assert(max > min);
float random = ((float) rand()) / (float) RAND_MAX;
// generate (in your case) a float between 0 and (4.5-.78)
// then add .78, giving you a float between .78 and 4.5
float range = max - min;
return (random*range) + min;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68517 次 |
| 最近记录: |