怎么获得一个在一定范围内的浮点型随机数?

tt1995cc 2017-04-10 05:26:30
C++,QT中怎么获得一个在一定范围内的浮点型随机数?
正真的随机数,不递增。
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
unsigned int ii =min+(float)qrand()/(float)(RAND_MAX/(max-min));
...全文
618 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-04-13
  • 打赏
  • 举报
回复
参考下面: 浮点数格式 http://bbs.csdn.net/topics/390676437
tt1995cc 2017-04-13
  • 打赏
  • 举报
回复
http://blog.csdn.net/qq118481
qsrand(QTime(0,0,0).secsTo(QTime::currentTime())+ qrand());
0369/article/details/14162563 也是一个方法
tt1995cc 2017-04-13
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
你的方法在RAND_MAX的值为32767时有缺陷。
不是真正的随机数,会递增,不知道怎么回事
tt1995cc 2017-04-13
  • 打赏
  • 举报
回复
不是真正的随机数,会递增,不知道怎么回事
tt1995cc 2017-04-12
  • 打赏
  • 举报
回复
我的方法

void IniRand()
{
    //qsrand(time(NULL));
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
}

double Rand(double min,double max)
{    

    double ii =min+qrand()/(double)(RAND_MAX/(max-min));
    
    return ii;
}
赵4老师 2017-04-12
  • 打赏
  • 举报
回复
你的方法在RAND_MAX的值为32767时有缺陷。
赵4老师 2017-04-11
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned long ulrand(void) {
    return (
     (((unsigned long)rand()<<24)&0xFF000000ul)
    |(((unsigned long)rand()<<12)&0x00FFF000ul)
    |(((unsigned long)rand()    )&0x00000FFFul));
}
unsigned __int64 ullrand(void) {
    return (
     (((unsigned __int64)ulrand())<<32)
    | ((unsigned __int64)ulrand()));
}
int i;
unsigned long ul;
unsigned __int64 ull;
void main() {
    srand(time(NULL));
    for (i=0;i<10;i++) {
        ul=ulrand();
        printf("%010lu 0x%08x\n",ul,ul);
    }
    for (i=0;i<10;i++) {
        ull=ullrand();
        printf("%020I64u 0x%016I64x\n",ull,ull);
    }
}
//3971076432 0xecb1d150
//2433428051 0x910b2a53
//1415415336 0x545d8628
//1312330759 0x4e389407
//1845758378 0x6e0409aa
//0008069933 0x007b232d
//4202720757 0xfa806df5
//2669855255 0x9f22c217
//0312068736 0x1299ca80
//2084555989 0x7c3fccd5
//03502077880857307931 0x3099e1472040ab1b
//16884702393146816355 0xea52835e19b43763
//01877364819396611730 0x1a0dbd5b45f34e92
//07839440151924835771 0x6ccb4948756a05bb
//09471412086917299176 0x8371371c820bfbe8
//04411255971577469925 0x3d37edef2f321be5
//13735846279546091130 0xbe9f876a65b7367a
//04512980766520059820 0x3ea15418aa9927ac
//15821377118299441610 0xdb90d2a9f1bb49ca
//15512417228822200185 0xd7472d480398bf79

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧