[英]Producing random float from negative to positive range?
我試圖使用rand()在-50.0和50.0范圍內產生一個隨機浮點數。 我到處尋找答案,但它處理的是int和%運算符。
試試這個:
float RandomNumber(float Min, float Max)
{
return ((float(rand()) / float(RAND_MAX)) * (Max - Min)) + Min;
}
試試這個:
rand()
為您提供0到RAND_MAX
之間的數字 RAND_MAX
以獲得介於0和1之間的數字 ((float)rand())/RAND_MAX * 100.0 - 50.0
老實說,所有目前的答案都沒有解釋他們的解決方案中的分布發生了變化(我假設rand()遵循統一分布!如果我錯了請糾正我)。 請使用庫,我的建議是使用C ++ 0x中的新工具:
#include <random>
#include <functional>
int main()
{
std::mt19937 generator;
std::uniform_real_distribution<float> uniform_distribution(-50.0, 50.0);
auto my_rand = std::bind(uniform_distribution, generator);
}
如果你做不到,Boost是一個完美的選擇。 這樣,你可以使用my_rand()就像好的'rand():
std::vector<float> random_numbers(1000);
std::generate(random_numbers.begin(), random_numbers.end(), my_rand);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.