2016-01-13 80 views
2

我发现了很多关于如何在C++中生成1和10之间的随机数的文章,但是我很努力的找到一种方法来处理负数被包含在内。我试图得到一个在[-1,1]范围内生成的随机数字,但我找不到包含底片的好例子。在C++中生成一个随机数,包括一个负范围

+0

你打算怎么做? (代码) –

+4

http://www.cplusplus.com/reference/random/uniform_real_distribution/uniform_real_distribution/ – PeterSW

+1

只需生成一个介于0和2之间的随机数并从中减去1即可。 – Snps

回答

5

如果你谈论的是实数,使用std::uniform_real_distribution

std::default_random_engine generator(
     std::chrono::system_clock::now().time_since_epoch().count()); 
std::uniform_real_distribution<double> distribution(-1.0, 1.0); 
std::cout << distribution(generator) << std::endl; 

一定要包括<random>。这是一个live example

如果你只限于rand(),这是你能做的最好的:

srand(static_cast<unsigned int>(time(NULL))); 
double x = -1. + rand()/(RAND_MAX/2.); 
std::cout << x << std::endl; 

一定要包括<cstdlib><stdlib.h>。这是另一个live example。但请注意,<random>标题优于rand()。有关更多信息,请参阅此演示文稿以了解为什么rand() is considered harmful

+0

不幸的是我只能使用rand()。有什么办法可以做到这一点? –

相关问题