我發現了很多關於如何在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. 生成一個隨機數的範圍
- 2. 每天在一個範圍內生成一個隨機整數
- 3. 在一個範圍內生成'n'個唯一隨機數
- 4. 使用C#在一個範圍內產生一個隨機數
- 5. 如何在C範圍內生成一個隨機數?
- 6. 在一個範圍內生成'n'唯一的隨機數
- 7. 在excel中生成一個隨機數字範圍
- 8. 在程序集中生成一個範圍內的隨機數
- 9. 生成範圍之間的隨機數,包括在javascript
- 10. 生成一個隨機數落入多個範圍
- 11. 在範圍內生成一個隨機偶數?
- 12. 在一個範圍內生成不同的隨機數
- 13. 在權重/偏差範圍內生成一個隨機數?
- 14. 需要在指定範圍內生成一個隨機整數
- 15. Java在特定範圍內生成一個隨機數?
- 16. 如何在Rust的範圍內生成一個隨機數?
- 17. 如何在一個範圍內生成一個隨機數,但排除一些?
- 18. 在一個範圍內生成一個隨機數。沒有Overlflow。在Java
- 19. 從列表生成一個隨機數,不包括其中一個數
- 20. 如何在c中生成一個範圍內的隨機數字#
- 21. 生成一個隨機的負NSInteger的
- 22. 如何在由C++中的負值和正值組成的範圍內生成一個隨機數?
- 23. 在一個範圍內的隨機數
- 24. 生成一個範圍內的隨機整數(無限循環)
- 25. 生成一個小範圍的隨機不重複的整數
- 26. 生成一個範圍內的隨機數1 - 10
- 27. 在MATLAB中生成負數和負數範圍內的隨機整數
- 28. C++:如何從一個數組中生成一個隨機數
- 29. 在SML中生成一個隨機數
- 30. 在JavaScript中生成一個隨機數
你打算怎麼做? (代碼) –
http://www.cplusplus.com/reference/random/uniform_real_distribution/uniform_real_distribution/ – PeterSW
只需生成一個介於0和2之間的隨機數並從中減去1即可。 – Snps