[英]Adding random integer number in c++
如何在C ++中将100到-100之间的随机整数添加到int变量?
value += (rand() % 201) - 100; // it's 201 becouse with 200 the value would be in [-100, 99]
不要忘记初始化随机值的种子(调用srand()),否则它将生成相同的值。 初始化种子的一种好方法是使用时间:
srand(time(NULL));
int rnd = 0;
rnd += ( ( rand() * 200 ) / RAND_MAX ) - 100;
编辑:显然,这将有RAND_MAX等于INT_MAX的问题。 在这种情况下,下面的答案是: 在c ++中添加随机整数可能更合适。
编辑:在Windows平台上,RAND_MAX定义为0x7fff,因此此计算将成功。 在其他平台上可能并非如此。
您可以这样做:
生成一个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;
}
在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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.