随机数和负数

时间:2010-09-30 12:57:00

标签: c++ random negative-number

我必须生成范围 [ - 100;在c ++中使用+2000] 。如果只有正数,我怎么能用rand呢?有什么快捷方式吗?

7 个答案:

答案 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 ++语法有点生疏,但您应该编写一个带有两个参数的函数:sizeoffset

因此,您生成给定size作为最大值的数字,然后向其添加(负)偏移量。

该功能如下:

int GetRandom(int size, int offset = 0);

将在您的案例中调用:

int myValue = GetRandom(2100, -100);

答案 6 :(得分:1)

在C ++ 0x中,他们将对此进行增强,以便使用标准库为其提供更好的支持。

http://www2.research.att.com/~bs/C++0xFAQ.html#std-random