随机数问题?

Tjerry 2007-09-05 05:59:58
我想产生 大于或等于 0.0 而小于 1.0 的双精度浮点随机数字
在c#里面是random.nextdouble().在c++中如何实现。
...全文
168 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfxiang 2007-09-05
  • 打赏
  • 举报
回复
应该要除以RAND_MAX+1,因为楼主要随机数小于1.0的
RocheFoo 2007-09-05
  • 打赏
  • 举报
回复
Leon8086()正解

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

int main(char *argv, int argc)
{

srand(time(NULL));
double d = static_cast<float>(rand())/static_cast<float>(RAND_MAX);//rand()/(RAND_MAX+1);

printf("%f",d);
getchar();
return 0;
}
Leon8086 2007-09-05
  • 打赏
  • 举报
回复
不过说到底这个rand也就RAND_MAX(一般是32767)级,别说double型,就是float型的精度也达不到。windows的多媒体库里面不知道有没有扩展的函数。
Leon8086 2007-09-05
  • 打赏
  • 举报
回复
伪随机数……
int rand( void )函数,返回一个0~RAND_MAX之间的int。你可以用static_cast<float>(rand())/static_cast<float>(RAND_MAX)来取得0~1的随机数。

之前要用srand函数设置种子。
Tjerry 2007-09-05
  • 打赏
  • 举报
回复
双精度浮点随机数 例如0.97575 等 rand() % 10; //0~9 精度不够
飞哥 2007-09-05
  • 打赏
  • 举报
回复
产生1到10的随机数
然后除以10就行了
srand(time(0));

rand() % 10; //0~9
。。。。

gfxiang 2007-09-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main()
{
double d[100];
int i;
srand(time(NULL));
for (i=0; i<100; i++)
d[i] = double(rand())/(RAND_MAX+1);

return 0;
}

65,210

社区成员

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

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