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

intrand()返回的全部都是正数吗?能不能返回一个负数呢?如果我想利用intrand返回出来任意的负数或者正数或者零,该如何使用呢?有什么技巧没有啊?恳请各位给出答案... int rand()返回的全部都是正数吗? 能不能返回一个负数呢?

如果我想利用int rand返回出来任意的负数或者正数或者零,该如何使用呢?有什么技巧没有啊?

恳请各位给出答案!
展开
 我来答
kaixingui2012
2015-10-24 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6379万
展开全部

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;
}
bdlanyu
2011-02-04 · TA获得超过550个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:523万
展开全部
返回值加个负号就成了负数,-rand()
返回-100~+100之间的随机数,rand()%200-100;
任意负数正数或零,rand()-rand();//(这看起来可行,但是一般是得不到零的。)
一般写成rand()%x-rand()%x;//(%x,限定随机数在一定范围。)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zwh202342
2011-02-04 · TA获得超过971个赞
知道大有可为答主
回答量:1417
采纳率:0%
帮助的人:1277万
展开全部
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;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
archmageee4
2015-10-01 · TA获得超过1516个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:921万
展开全部
标准rand 返回的不会是负的,他的范围0~ 2^31
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dmdream
2011-02-04 · 超过13用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:40.6万
展开全部
pow( -1, rand() ) * rand();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式