在c ++中添加随机整数

时间:2011-03-15 13:17:42

标签: c++ random

如何在c ++中添加一个100到-100之间的随机整数到一个int变量?

4 个答案:

答案 0 :(得分:5)

value += (rand() % 201) - 100; // it's 201 becouse with 200 the value would be in [-100, 99]

不要忘记初始化随机值的种子(调用srand()),否则它将生成相同的值。初始化种子的好方法是使用时间:

srand(time(NULL));

答案 1 :(得分:1)

int rnd = 0;
rnd += ( ( rand() * 200 ) / RAND_MAX ) - 100;

编辑:显然这会出现RAND_MAX等于INT_MAX的问题。在这种情况下,答案如下:Adding random integer number in c++可能更合适。

编辑:在Windows平台上,RAND_MAX定义为0x7fff,因此此计算将成功。在其他平台上可能并非如此。

答案 2 :(得分:1)

你可以这样做:

生成0到100之间的随机数,并用0到100之间的随机数减去它。

#include <cstdlib> 
#include <ctime> 
#include <iostream>

using namespace std;

int main() 
{ 
srand((unsigned)time(0)); 
int random_integer; 
random_integer = (rand()%101) - (rand()%101); 
cout << random_integer << endl; 
return 0;
}

答案 3 :(得分:0)

在C ++ 11中:

#include <random>

int main()
{
    typedef std::mt19937_64 G;
    G g;
    typedef std::uniform_int_distribution<> D;
    D d(-100, 100);
    int x = 0;
    x += d(g);
}

其他随机来源也可用,例如:

minstd_rand0
minstd_rand
mt19937
ranlux24_base
ranlux48_base
ranlux24
ranlux48
knuth_b

只需更改typedef G即可。您可以根据自己的喜好在施工时种植g