C++中产生一浮点数随机数函数是什么?

作者&投稿:尤饺 (若有异议请与网页底部的电邮联系)
c++如何产生0到1之间的随机数?~

C++中用来产生随机数的函数为rand(), 其返回值为整数。
而0到1之间的随机数,明显是浮点数。
这样无法直接产生。
于是,必须经过转换。
转换思路为,生成一个0-N的随机数,然后对其除以N+1,则可以得到0-1直接的浮点型随机数。
N的确定,可以与要求的精度有关,比如需要三位小数,可以采用N=999,如需要四位,则采用N=9999,以此类推。
具体操作如下:
#include #include void get_rand(float *p, int n)//函数功能为产生n个0-1的随机数,存储于数组p中。{ int i; #define N 999 //三位小数。 srand(time(NULL));//设置随机数种子,使每次获取的随机序列不同。 for(i = 0; i < n; i ++) p[i] = rand()%(N+1)/(float)(N+1);//生成0-1间的随机数。}

#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这个产生浮点数.

扩展资料:

include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。


rand(产生随机数)
相关函数
srand
表头文件
#include<stdlib.h>
定义函数
int rand(void)
函数说明
rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。
返回值
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。

但是要产生你需要的数的话,就需要按下面的方式:
double randf()
{
return (double)(rand()/(double)RAND_MAX);
}
我在dev-c++里试了一下,一个简单的例子,仅供参考:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{ double i;
srand(time(NULL));
double randf()
{
return (double)(rand()/(double)RAND_MAX);
}
i=randf();
printf("%lf",i);
getch();
}
如果还有其他什么问题,欢迎讨论。

#include "stdafx.h"
#include "cstdlib"
#include "iostream.h"
int main()
{
int i,n;
cin>>n;
cout<<endl;
srand(n);
for(i=0;i<10;i++)
cout<<(RAND_MAX-rand())/static_cast<float>(RAND_MAX)<<endl;
cout<<endl;
return 0;

}


有效浮点数和无效浮点数区别
无效浮点数则是不符合浮点数表示规范的数值,例如无穷大、NaN(Not a Number)、非数值(如字符串、字符等)。无效浮点数在进行算术运算时会产生异常或错误结果。浮点数的表示规范和范围是由IEEE 754标准定义的。该标准规定了浮点数的表示形式、精度和范围,以及处理浮点数的运算规则。有效浮点数必须在...

C语言中printf输出浮点数按"%m.nf"格式输出,为什么有的会四舍五入,而...
首先肯定,电脑一定会四舍五入;其次解释,为什么119.985四舍五入后成为了119.98了,因为计算机内部是二进制,某些看似简单小数转换为二进制会许多位、甚至循环,所以再次转换为十进制的时候可能产生误差,119.985这么一折腾有可能就成为了119.984999999,因此出现帖子的情况。作为验证,我在UNIX平台写了一...

python中怎么设置随机产生数字
假设起始值为a,结束值为b,随机数为N,则有:a <= N <= b --- 扩展阅读:a.在某个给定的序列中随机产生1个值:.上面只是给出部分支持的序列: 字符串, 列表, 元组, range()函数.b.随机返回 0.0到1.0 之间的浮点数:c.从序列中随机取n个值(可重复):希望可以帮到题主,欢迎追问.

浮点数转二进制数
采用 尾数 + 阶码 的编码方式,更通俗一点说,就是类似于数学课本上所学的 科学计数法 表示方式: 有效数字 + 指数位 !因此,只要给出: 符号(S) 、 阶码部分(E) 、 尾数部分(M) 这三个维度的信息,一个浮点数的表示就完全确定下来了,所以float和double这两种类型的浮点数在计算机中的...

...随机产生10个0到1000之间的双精度浮点数,保留3位小数输出每个数的平...
直接给代码了 double x = Math.random();\/\/生成[0,1)double y = x * 1000; \/\/ 转为[0, 1000)double r = Math.sqrt(y); \/\/ 求平方根System.out.printf("%.3f", r); \/\/格式化输出,保留3位小数循环的话你在外面套一层 for(int i = 0; i<10;i++){...} ...

为什么浮点数的表示范围比整型数大?
浮点数的表示范围比整型数大是因为采用的表示形式不同。整型数在计算机底层采用补码的形式表示,除去首位的符号位,剩余的位数即表示数值的范围。浮点数在计算机中则是实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,用以近似表示任意某个实数。

python产生1到100的随机数是多少?
如果是为了得到随机的单个数,多考虑random模块;如果是为了得到随机小数或者整数的矩阵,就多考虑numpy中的random函数,对于random模块的函数调用方法的记忆,可以多从它本身的英译出发。数据分析 1、返回a与b之间的随机浮点数N,范围为[a,b]如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=...

定点数和浮点数的表示方式有什么特点
定点数是小数点固定的数。在计算机中没有专门表示小数点的位,小数点的位置是约定默认的。一般固定在机器数的最低位之后,或是固定在符号位之后。前者称为定点纯整数,后者称为定点纯小数。定点数表示法简单直观,但是数值表示的范围太小,运算时容易产生溢出 浮点数 浮点数是小数点的位置可以变动的数...

c语言中实数的表示类型
标准C允许浮点数使用后缀,后缀为f或F,即表示该数为浮点数。简单的说实型就是实数,就是小数,单精度实型的数据类型符为float,占用4字节内存空间,数值范围是1e-38~1e38保留7位。双精度实型的数据类型符为double,占用8字节内存空间,数值范围是1e-308~1e308保留11位。C语言是一门面向过程的、...

random.randrange(1,10,3)函数生成的数不可能出现的是()
random函数用法如下:1、random.random:随机生成(0,1)之间的浮点数。2、random.randint(上限,下限):随机生成在范围之内的整数,两个参数分别表示上限和下限。3、random.randrange:在指定范围内,按指定基数递增的集合中获得一个随机数,有三个参数,前两个参数代表范围上限和下限,第三个参数是...

平顺县18986448223: c++如何生成一定范围内的随机浮点数 -
项斌秦苏: 比例法,设要生成[a,b]内的随机浮点数,用随机数函数生成N以内的整型数r,对应浮点随机数=a十[b-a][rand()%N]/N N取大一点,分部稍微均匀一些.

平顺县18986448223: vc++中的随机函数是什么?怎么用的? -
项斌秦苏: VC++中,产生随机数有一个函数 int rand(void); // #include <stdlib.h> 是随机产生一个0到RAND_MAX的整数 但要产生0-255,可能要自己写函数实现了.#include <stdlib.h> #include <stdio.h> #include <assert.h>/*该函数缺陷:只能取正整数的...

平顺县18986448223: 如何在ADAMS中产生0—1之间的随机数. -
项斌秦苏: C++中用来产生随机数的函数为rand(), 其返回值为整数. 而0到1之间的随机数,明显是浮点数. 这样无法直接产生. 于是,必须经过转换. 转换思路为,生成一个0-N的随机数,然后对其除以N+1,则可以得到0-1直接的浮点型随机数.

平顺县18986448223: 如何在C++中产生随机数 -
项斌秦苏: 使用rand()函数获取一个随机数 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647. 代码如下:#includeusing namespace std; int main() { for(int i=0;i<10;i++) { cout<< } }

平顺县18986448223: 在C++中产生随机浮点数
项斌秦苏: 我写的伪代码,你明白意思就好 如果一位小数(float)(rand()%10 + 10 )/10.0f; 如果两位小数(float)(rand()%100 + 100 )/100.0f; 以此类推

平顺县18986448223: C++中如何随机会产生数字啊? -
项斌秦苏: 用rand() 生成随机数 表头文件 #include 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MAX 间.在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时...

平顺县18986448223: c++中怎样随机生成浮点型的数据? -
项斌秦苏: 提供一个不是很完善的算法 假设要生成1.0000-20.0000之间的随机double数 那么先生成10000-200000之间的随机int数,然后除以10000 srand((unsigned)time(null)); int a=rand()%190001+10000; double da=(double)a/10000;

平顺县18986448223: c++随机数产生是哪个函数
项斌秦苏: c++ 随机数rand() 好运

平顺县18986448223: c++产生随机数函数是什么? -
项斌秦苏: 正在开发审定中的 C++ 新版标准包括一个随机数生成器库,可以生成好几种常用随机分布类型的随机数. 不过传统的随机数函数还是标准 C 库中的 rand().// 设定随机数发生公式的种子值 srand( (unsigned)time( NULL ) );// 获得随机数 int i = rand() % 4 + 1;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网