如何用c语言取0-1间的随机小数??

作者&投稿:栾宰 (若有异议请与网页底部的电邮联系)
如何用C语言生成(0,1)之间的随机浮点数~

很简单,用rand()%x,x取某整数,就会生成一个0~x-1的整数,再用小数乘之即可,我这里生成了10个0~1的随机数
#include
#include
void main()
{
float b;
for(int i=0;i<10;i++)
{
b=(rand()%100000)*0.00001;
printf("%f
",b);
}
}

VC环境下要比TC麻烦一些
格式如下:
#include "time.h"
#include "stdlib.h"
#include "stdio.h"
void main()
{
double x;

srand((unsigned)time(0)); //根据时间来产生随机数种子
x=(double)rand()/RAND_MAX*49+1.0;//(double)rand()/RAND_MAX产生0到1之间的随机数,乘以49,加上1.0就是1到50的随机数。
printf("%lf",x);

}

可以写一个函数,利用math.h中的rand来产生随机浮点数。

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

// 精度0.001的随机浮点数
float randf()
{
return (float)(rand() % 1001) * 0.001f;
}

main()
{
int i;
for (i=0; i<100; ++i) printf("%.3f\n", randf());
system("pause");
}

VC里rand()的范围是从0到某个内部指定的极大数,但是以前似乎有些书上说用rand得到的可能是负数。如果有出现负数的话,对rand得到的数取绝对值就可以了。

使用随机数生成函数int rand()

#include<math.h>
main()
{float m=rand();
while(m>=1) m/=rand();
printf("%f",m);
scanf("%c");}


在C语言中,怎样用操作符表示一个数的开方?
1 0 \/ 3 = 3。一元减法的实际效果等于用- 1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。表2-5 算术运算符 运算符 作用 运算符 作用 - 减法,也是一元减法 模...

用C语言写一个代码从1到10,再从10到1,无限循环,按照1++和1--就行
#include<stdio.h> int main(){ int i = 1;int n = 1;while(n){ if(i<=10){ for(i = 1;i<=10;i++){printf("%d\\n",i)} }else{ for(i = 10;i>0;i--){printf("%d\\n",i)} } } return 0;}

写单片机中断中(C语言) interrupt 1 using 0 1 ,0 是什么用的?求解释...
编译器会自动选择一组寄存器作为绝对寄存器访问的。using对代码是有一定的影响的。给你说个简单的例子,你可以想下,如果定义 void time0() interrupt 1 using 1 假设,我们又在中断里调用了一个delay();这个delay是起延时作用。那么,我们就需要确保我们使用的寄存器组是同一组,否则,就会出现混乱。

如何用C语言编写个1到100的随机取数程序
include<stdio.h> include<stdlib.h> include void main(){ int y,i;srand((unsigned) time(NULL));for ( i=0;i<10;i++ ) \/\/下面生成10个随机数并打印 { y=rand()%99+1; \/\/生成0~99之间的一个随机数+1=1~100之间的随机数 printf("%d\\n",y);} } ...

求用C语言编写1-1\/2+1\/3-...-1\/n
思路:首先看分子1,-1,1……,正负交替可以每次自成-1实现,分母1,2,3……依次递增,考虑到c语言中整数除以整数结果是整数,可以把分子定义成float类型。参考代码:include <stdio.h>int main(){ int n,i; scanf("%d",&n); float sum=0.0,t=1.0; for(i=1;i<=n;i++...

c语言随机函数随机取1-100之间的数100次,统计各数字出现的频数并输出...
include "stdio.h"include "stdlib.h"incude "time.h"int main(){ int a[100]={0};int i,num;srand(time(NULL));for(i=0;i<100;i++){ num=rand()%100+1;a[num-1]++;} printf("1-100的数 频数\\n");for(i=0;i<100;i++)printf(" %d %d\\n",i+1,a[i]);p...

C语言中∧是什么意思?有什么用?
C语言中∧是什么意思?有什么用?∧是C语言中的位与运算符,用来对两个数字做按位“与”运算。它的作用是将两个数字各二进制表示相应位上都取1时才取1,其他情况均取0。

如何用C语言实现电平的极性转换?即0 和1电平转换为1和 -1电平
这个问题的概念不清。C语言是软件,电平是由硬件产生的电位。虽然软件一定要在硬件的基础上运行,但是通常讲软件时,只关心软件所对应的信息、状态和逻辑功能。软件中没有电平电位,无视其硬件基础。二进制数据0或1是两个概念定义,比如说约定0代表逻辑值FALSU,1代表逻辑值TRUE;或者反之约定亦可。如果...

x<-1或0<=x<=2或x>5。用c语言怎么写?
最好用上括号,不然||和&&优先级一样,结果就会出错 x<-1||(x>=0&&x<=2)||x>5

c语言的-1输出的%u为什么是4294967295
C语言中printf("%u")表示按无符号数形式输出一个整数。现在的机器一般为32位或64位机,整数存储占4个字节,一个字节8位,共计32位。整数在计算机中以补码形式存储,-1的补码为32个1组成的二进制数,按无符号数输出这个二进制数,就是2^32-1=4294967295 由于采用补码表示整数,计算机本身不关心整数...

纳溪区13041349285: 如何用c语言取0 - 1间的随机小数?? -
叱干琴二盐: 可以写一个函数,利用math.h中的rand来产生随机浮点数.#include #include #include// 精度0.001的随机浮点数 float randf() {return (float)(rand() % 1001) * 0.001f; }main() {int i;for (i=0; i<100; ++i) printf("%.3f\n", randf());system("pause"); }VC里rand()的范围是从0到某个内部指定的极大数,但是以前似乎有些书上说用rand得到的可能是负数.如果有出现负数的话,对rand得到的数取绝对值就可以了.

纳溪区13041349285: c语言中如何生成1个0到1的随机数 -
叱干琴二盐: float b=rand()/(RAND_MAX+1.0); printf("%f\n",b); 注释:stdlib.h头文件中有宏#define RAND_MAX 0x7fff rand()产生一个0到0x7ffff即0到32767之间的随机数 rand()/(RAND_MAX+1.0)就等于一个0到1之间的小数了,因为rand()最大是32767最小是0,再除以32768就是一个0到1之间的小数(不能等于1),再乘以10就是一个0到10之间的数了(不等于10).最后再加1,就成了一个求1到10之间随机数的式子了.

纳溪区13041349285: 在C语言中,怎样产生一个0到1的随机数?? -
叱干琴二盐: #include void main(void) { int i; srand( (unsigned)time( NULL ) );/*这一句很重要,如果没有的话,每次产生的数据都是不变的.*/ for(i=0;i { printf("%d ",rand()%2);/*产生10个0到1的随机数*/ } }

纳溪区13041349285: C语言中如何自动产生一个0到1之间的两位小数?谁知道这一下呗! -
叱干琴二盐: float(j*100/k)这里就是强制转换为单精度 单精度和整型,两个都要转换为双精度才能够进行算术运算的 还有y的类型如果是int 那么就是双精度强制赋值给整型y,

纳溪区13041349285: c++如何产生(0,1)之间(开区间)的随机数? -
叱干琴二盐: 用rand函数产生一列1~32768的数,除以32769.0来实现.举例代码如下://#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #include "stdlib.h" #include "time.h" int main(void){int k,i;double x=RAND_MAX+2.0;srand...

纳溪区13041349285: 在C语言下实现0—1之间的随机数 -
叱干琴二盐: 随机数周期超长,且分布均匀,采用混洗方法避免重复#include #include #include #include #include <iomanip.

纳溪区13041349285: c语言如何产生在一定范围内的随机数 -
叱干琴二盐: //---------------------------------------------------------------------------#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) {int a;int t=10,d=100;srand(time(NULL)); /*初始化随机数种子*/ a=rand()%(d-t)+t; /*生成一个[t,d)区间内的整数*/...

纳溪区13041349285: c语言生成0到1的随机浮点数,我知道2种方法,哪种更好一些呢. -
叱干琴二盐: 第一种更好.因为rand的范围是到RAND_MAX VC里面他的定义是32767 所以第二种会限于0~0.032767之间 这显然不符合要求

纳溪区13041349285: 如何用VC抽取随机数0到100,并能统计概率 20CSDN -
叱干琴二盐: C++中用来产生随机数的函数为rand(), 其返回值为整数.而0到1之间的随机数,明显是浮点数.这样无法直接产生.于是,必须经过转换.转换思路为,生成一个0-N的随机数,然后对其除以N+1,则可以得到0-1直接的浮点型随机数.N的...

纳溪区13041349285: C语言,关于0 - 1之间的真正的随机数的问题,求指教 -
叱干琴二盐: srand((int)time(0));这句话移出去,移到程序启动的位置(比如main函数的第一句话),只需执行一次

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