我必須生成範圍[-100; + 2000] in C++。如果只有正數可用,我怎樣才能用rand來做到這一點?有沒有什麼快捷方式?隨機和負數
Q
隨機和負數
9
A
回答
35
產生然後在0和2100之間的隨機數中減去100
甲快速谷歌搜索翻起decent looking article on using Rand().它包括代碼示例,與特定的工作範圍在文章的結尾。
4
你能從0-2100產生一個數字並減去100嗎?
6
生成一個0到2100之間的隨機數,然後減去100.
3
這是代碼。
#include <cstdlib>
#include <ctime>
int main()
{
srand((unsigned)time(0));
int min = 999, max = -1;
for(size_t i = 0; i < 100000; ++i)
{
int val = (rand()%2101)-100;
if(val < min) min = val;
if(val > max) max = val;
}
}
1
目前我的C++語法是有點生疏,但你應該編寫一個函數,有兩個參數:size
和offset
。
因此,您可以生成具有給定size
的數字作爲最大值,然後爲其添加(負)偏移量。
的功能將類似於:
int GetRandom(int size, int offset = 0);
,並會在你的情況可以這樣調用:
int myValue = GetRandom(2100, -100);
1
在C++ 0x中,他們將加強這爲它提供更好的支持了標準庫。
5
可以使用C++ TR1隨機函數來生成所期望的分配號碼。
std::random_device rseed;
std::mt19937 rng(rseed());
std::uniform_int<int> dist(-100,2100);
std::cout << dist(rng) << '\n';
+0
對於沒有TR1的人來說,boost :: random非常接近。 – MSalters 2010-10-01 08:28:37
相關問題
- 1. asp.net負載隨機
- 2. 在Jmeter中設置隨機函數的隨機負數?
- 3. JavaScript隨機正數或負數
- 4. 在MATLAB中生成負數和負數範圍內的隨機整數
- 5. C#中的隨機替換正數和負數數組#
- 6. 的Java隨機給予負數
- 7. 如何隨機使用負數.randrange
- 8. 負重隨機選擇
- 9. 如何在VBA中生成隨機正數和負數
- 10. 總和隨機數
- 11. StackOverflowError和隨機數
- 12. gfortran和隨機數
- 13. 數組和隨機數
- 14. 數組,函數和隨機
- 15. 如何在PHP中獲得隨機十進制數(正數和負數)
- 16. 如何生成隨機正數或負數小數?
- 17. Javascript/jQuery隨機調整負載圖片?
- 18. 負載隨機化的文本內容
- 19. 在Apache中的隨機負載平衡
- 20. 生成一個隨機的負NSInteger的
- 21. 數組和隨機值
- 22. c#概率和隨機數
- 23. 隨機數和微軟CNG
- 24. Java循環和隨機數
- 25. 隨機int64和float64數字
- 26. 概率和隨機數
- 27. 隨機數的總和
- 28. Android隨機數和edittext
- 29. 隨機數和多鍵c#
- 30. 具有隨機範圍和函數的隨機數組
這不會給出均勻分佈!另外,找到100000個這樣的數字的最小值和最大值與該問題無關。 – darklon 2010-09-30 13:49:12
另外,如果偶然'val'每次都是'-100',那麼產生的'max'將是錯誤的。同上最低。 – 2010-09-30 15:36:44
@Cornelius,@Ben:誰在乎?這只是一個演示。如果我只發佈了'(rand()%2101)-100',那會比可編譯的,可運行的樣本更好?請。 – 2010-09-30 16:08:18