生成浮点数的随机函数

今天在群里和一位朋友讨论了浮点数的随机函数实现.

以下为代码和思路.

 

//为了扣题和便于理解,我没用一些C++高阶的技巧,完全按照题目一步一步走,所以显得麻烦点

#include <stdlib.h>
#include <time.h>
#include <iostream.h>

#define MAX_RANDOM 1000    //这个是产生随机数的最大值,但是取浮点数,所以要除去的

#define NUM 2500

double random(double a,double b)         //这个是产生随机数函数,由于库函数功能有限,所以要自己封装一下
{
 return (rand()%(int)((b-a)*MAX_RANDOM))/(double)MAX_RANDOM+a;
}

void main()
{
 double Dran[NUM + (NUM-1)*4];
 double ran[(NUM-1)*4];
 double a,b;
 int k=0;
 
 srand( (unsigned)time( NULL ) );//这个是设定随机数的种子数,由于种子数相同产生的随机数相同,所以取时间做种子

 cout<<"***********************************亲体**************************"<<endl;
 for(int i =0;i<NUM + (NUM-1)*4;i=i+5)          //获得了亲体
 {
  Dran[i] = random(10,20);
  cout<<Dran[i]<<" ";
 }
/*
 cout<<"***********************************后代**************************"<<endl;
 //Dran里面是装的亲代和后代一起的,ran里面只是装的后代
 for(i=0;i<NUM + (NUM-1)*4 - 1 ; i=i+5 )
 {
  a = Dran[i];
  b = Dran[i+5];
  for(int j=1;j<=4;j++)
  {
   Dran[i+j] = random(a,b);
   ran[k] = Dran[i+j];
   cout<<ran[k]<<" ";
   k++;
  }
 }
*/
}

 

 

 

 

(    rand()%(int) (  (b-a)*MAX_RANDOM)  ) /(double)MAX_RANDOM  +a 这个产生浮点数.

思路来源:

想得到0-num之间随机数就是rand()%num定性思维.如果要得浮点数,就只有扩大再缩小,也是定性思维,两个结合.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值