我發現了很多關於如何在C++中生成1和10之間的隨機數的文章,但是我很努力的找到一種方法來處理負數被包含在內。我試圖得到一個在[-1,1]範圍內生成的隨機數字,但我找不到包含底片的好例子。在C++中生成一個隨機數,包括一個負範圍
2
A
回答
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()。有什麼辦法可以做到這一點? –
相關問題
- 1. 使用C#在一個範圍內產生一個隨機數
- 2. 如何在C範圍內生成一個隨機數?
- 3. 在excel中生成一個隨機數字範圍
- 4. 生成一個隨機數落入多個範圍
- 5. Java在特定範圍內生成一個隨機數?
- 6. 如何在c中生成一個範圍內的隨機數字#
- 7. 生成一個隨機的負NSInteger的
- 8. 生成一個範圍內的隨機數1 - 10
- 9. C++:如何從一個數組中生成一個隨機數
- 10. 在Haskell中生成一個隨機數
- 11. 在JavaScript中生成一個隨機數
- 12. 在CakePHP中生成一個隨機數?
- 13. 在集羣環境中生成一個範圍內(0-100k)的隨機數
- 14. 生成一個隨機數得到一個隨機列表項
- 15. 在super.ViewDidLoad下生成一個隨機數
- 16. 如何從一個範圍內生成3個非重複的隨機數字?
- 17. C#生成一個隨機IP地址
- 18. 隨機數字生成器Javascript - 範圍
- 19. 在隨機字節的給定範圍內生成隨機數
- 20. 從大的範圍內產生一個隨機數,除了從大的範圍
- 21. C++爲psudo隨機數生成器生成一個很好的隨機種子
- 22. 隨機化一個列表,但範圍
- 23. 在C中生成一個隨機十進制數
- 24. 如何在C#中生成一個隨機數?
- 25. 如何在C中生成一個真正的隨機數?
- 26. 試圖在C#中創建一個隨機數生成器4.69
- 27. Movable Type:如何生成一定範圍的隨機數?
- 28. 我如何使用隨機類在C#中生成一個隨機數(XNA)
- 29. 如何生成一個隨機數
- 30. 生成一個N位隨機數
你打算怎麼做? (代碼) –
http://www.cplusplus.com/reference/random/uniform_real_distribution/uniform_real_distribution/ – PeterSW
只需生成一個介於0和2之間的隨機數並從中減去1即可。 – Snps