c++中int rand()能够返回负数呢?

2024-12-25 08:14:33
推荐回答(5个)
回答1:

rand()函数不能够返回负数!

在linux下man rand,可以看到函数说明:

NAME
    rand, rand_r, srand - pseudo-random number generator
SYNOPSIS
    #include 
    int rand(void);
DESCRIPTION
    The rand() function returns a pseudo-random integer between 0 and RAND_MAX.
    rand()函数返回一个0-RAND_MAX之间的伪随机整数
    RAND_MAX是个宏,在不同的系统下有差别,定义在stdlib.h中
    #define        RAND_MAX        2147483647

如果想得到任意的有符号的随机数(正数,负数,0),可以取两个随机数,一个数用来表示符号(奇数为负,偶数为正),一个数用来表示数值,如:

#include 
#include 
#include 
using namespace std;
int  main()
{
    srand(time(NULL));
    for( int i=0;i<10;i++ )
    {
        if ( rand()%2 == 0 ) //判断符号,
            cout << rand() <        else
            cout << -rand() <    }
    return 0;
}

回答2:

返回值加个负号就成了负数,-rand()
返回-100~+100之间的随机数,rand()%200-100;
任意负数正数或零,rand()-rand();//(这看起来可行,但是一般是得不到零的。)
一般写成rand()%x-rand()%x;//(%x,限定随机数在一定范围。)

回答3:

rand返回的数值是正整数值,是零到int的最大值,如果想要包含正负号则需要在自己添加实现。
int rand(int Max)
{
int Result;
randomize();
int state = rand(1);
Result = rand(Max);
if (!Result)
{
return Result;
}
else
{
if (state)
{
return Result - Result*2;
}
return Result;
}
}

回答4:

标准rand 返回的不会是负的,他的范围0~ 2^31

回答5:

pow( -1, rand() ) * rand();