c++如何产生(0,1)之间(开区间)的随机数?

2024-11-23 11:03:32
推荐回答(5个)
回答1:

用rand函数产生一列1~32768的数,除以32769.0来实现侍粗。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void){
    int k,i;
    double x=RAND_MAX+2.0;
    srand((unsigned)time(NULL));
 悄悉   for(k=i=0;i<50;i++)
        printf(++k%9 ? "%10f" : "%10f\n",(rand()+1)/x);
    if(k%9) printf("\n"老运镇);
    return 0;
}

回答2:

C++中rand()函数是产生随型旦机数的一个随机函数,范围为卜帆扰0~RAND_MAX,其中轿毁
RAND_MAX是C中stdlib.h中宏定义的一个字符常量:
所以,要得到一个(0,1)之间(开区间)的随机数,可以这样:
#include
#include
#include
void main( void )
{
int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
cout<<((double)rand())/(RAND_MAX+1)<}

回答3:

取0-10000000000之间扰陆饥的随缓返机悉滚数,然后除以10000000000即可

强制转换为double型就不会判为0 了

回答4:

就随0之1的10^9次方 之后得出的东西除10^9次方

回答5:

楼悔胡雀腊上为何不试试,用除法得出的数可是自动判为0

#include
#include
#include

int main()
{
srand(time(NULL)); //时间种子
double a=0.00000000001; //先做double a种碧岁拦子
a=a*(rand()%10000000000);
cout< return 0;
}