24小时热门版块排行榜    

查看: 1635  |  回复: 14
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tc1788

铁虫 (小有名气)

[交流] 【求助】产生0~1之间随机数的函数

产生0~1之间随机数的函数 大家帮帮忙好吗
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

black1316

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
gwdavid(金币+5,VIP+0):谢谢 8-24 15:45
我参考 java 随机数生成函数写的一个简单的 C++ 版本

typedef unsigned long long uLL;

uLL seed = 1;

void setSeed( uLL s )
{
        seed = s;
}

       
double nextDouble()  // 返回下一个 double 型随机数,范围是 0 到 1
{
        return ( ( ( uLL )next( 26 ) << 27 ) + next( 27 ) ) / 9007199254740992.0;  
}
       
int next( int bits )  // 生成下一个伪随机数
{
      
        seed = ( seed * 25214903917L + 11L ) & 0xFFFFFFFFFFFF;
        return ( int ) ( seed >> ( 48 - bits ) );
}

使用 nextDouble() 函数就可以返回 0 到 1 之间的伪随机数了。
一般用系统时间来设置随机数种子,即 seed = ( unsigned ) time( NULL );
9楼2009-08-24 12:24:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

ms98


sunxiao(金币+1,VIP+0):谢谢参与,欢迎常来 7-15 06:50
srand( time( NULL ) );  //种子函数
rand();  //产生随机数的函数
其实google一下啥都有了
2楼2009-07-14 22:09:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

羽寒月

银虫 (小有名气)

★ ★
wangen994(金币+1,VIP+0):感谢参与讨论 7-16 09:05
tc1788(金币+1,VIP+0):谢谢 7-29 10:05
要0和1之间的还要除一下
a = rand()/(RAND_MAX+1.0);
3楼2009-07-15 15:49:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

argo

铁杆木虫 (著名写手)

上善若水

一般的随机函数都是0-1之间的吧
居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
4楼2009-07-15 17:48:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见