[英]Random and negative numbers
我必须生成范围[-100; +2000]在 C++ 中。 如果只有正数可用,我如何用 rand 来做到这一点? 有什么快速的方法吗?
生成 0 到 2100 之间的随机数,然后减去 100。
快速的谷歌搜索找到了一篇关于使用 Rand()的不错的文章。 它包括在文章末尾处理特定范围的代码示例。
您可以使用 C++ TR1 随机函数生成所需分布的数字。
std::random_device rseed;
std::mt19937 rng(rseed());
std::uniform_int_distribution<int> dist(-100,2100);
std::cout << dist(rng) << '\n';
生成 0 到 2100 之间的随机数,然后减去 100。
这是代码。
#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;
}
}
你能从 0-2100 中生成一个数字并减去 100 吗?
在 C++0x 中,他们将增强这一点,以通过标准库为其提供更好的支持。
目前我的 C++ 语法有点生疏,但您应该编写一个带有两个参数的函数: size
和offset
。
因此,您生成具有给定size
作为最大值的数字,然后向其添加(负)偏移量。
该函数将如下所示:
int GetRandom(int size, int offset = 0);
并且会在您的情况下被调用:
int myValue = GetRandom(2100, -100);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.