我必须生成范围 [ - 100;在c ++中使用+2000] 。如果只有正数,我怎么能用rand呢?有什么快捷方式吗?
答案 0 :(得分:36)
生成0到2100之间的随机数,然后减去100。
快速谷歌搜索出现了decent looking article on using Rand().它包含了在文章末尾处理特定范围的代码示例。
答案 1 :(得分:6)
生成0到2100之间的随机数,并减去100。
答案 2 :(得分:5)
您可以使用C ++ TR1随机函数生成所需分布的数字。
std::random_device rseed;
std::mt19937 rng(rseed());
std::uniform_int<int> dist(-100,2100);
std::cout << dist(rng) << '\n';
答案 3 :(得分:4)
你能从0-2100生成一个数字并减去100吗?
答案 4 :(得分:4)
这是代码。
#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;
}
}
答案 5 :(得分:1)
目前我的C ++语法有点生疏,但您应该编写一个带有两个参数的函数:size
和offset
。
因此,您生成给定size
作为最大值的数字,然后向其添加(负)偏移量。
该功能如下:
int GetRandom(int size, int offset = 0);
将在您的案例中调用:
int myValue = GetRandom(2100, -100);
答案 6 :(得分:1)
在C ++ 0x中,他们将对此进行增强,以便使用标准库为其提供更好的支持。