2016-01-13 275 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()。有什麼辦法可以做到這一點? –