概述
今天在群里和一位朋友讨论了浮点数的随机函数实现.
以下为代码和思路.
//为了扣题和便于理解,我没用一些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定性思维.如果要得浮点数,就只有扩大再缩小,也是定性思维,两个结合.
最后
以上就是冷静猎豹为你收集整理的生成浮点数的随机函数的全部内容,希望文章能够帮你解决生成浮点数的随机函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复