c++中int rand()能够返回负数呢?
intrand()返回的全部都是正数吗?能不能返回一个负数呢?如果我想利用intrand返回出来任意的负数或者正数或者零,该如何使用呢?有什么技巧没有啊?恳请各位给出答案...
int rand()返回的全部都是正数吗? 能不能返回一个负数呢?
如果我想利用int rand返回出来任意的负数或者正数或者零,该如何使用呢?有什么技巧没有啊?
恳请各位给出答案! 展开
如果我想利用int rand返回出来任意的负数或者正数或者零,该如何使用呢?有什么技巧没有啊?
恳请各位给出答案! 展开
6个回答
展开全部
rand()函数不能够返回负数!
在linux下man rand,可以看到函数说明:
NAME
rand, rand_r, srand - pseudo-random number generator
SYNOPSIS
#include <stdlib.h>
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 <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
for( int i=0;i<10;i++ )
{
if ( rand()%2 == 0 ) //判断符号,
cout << rand() <<endl;//符号数为偶数输出正值
else
cout << -rand() <<endl;//符号数为奇数输出负值
}
return 0;
}
展开全部
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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
标准rand 返回的不会是负的,他的范围0~ 2^31
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pow( -1, rand() ) * rand();
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询