⑴ c语言用rand()取随机数能不能取的是小数
rand()是生成一个从0到RAND_MAX的随机数,所以要生成小数,除以RAND_MAX就一定是一个小数:
(double)rand()/RAND_MAX
什么叫随机数?就是不确定的数,不过这个表达式,可以肯定的是从0到1的小数。
⑵ c语言产生一个随机无限不循环小数
"无限不循环小数"的标准是啥?计算机和手工书写都是有确定长度的,不可能是无限的;“无限”在数学上只是一种对趋势的推理,而用一个称号来表示这种推理和趋势。用C产生的伪随机数可以做到“无限不循环”,但显示出来肯定就有限制而被截断了。一个被截断了的数字,谁又能肯定它一定是“无限不循环”的呢?
⑶ 如何c语言中随机产生1-50的随机数,包括小数
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);
}
⑷ c语言中如何产生1或0随机数
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之间随机数的式子了.
⑸ C语言产生1~10随机小数
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double rnd(void)
{
static int fg=1;
int rd;
if (fg) {
srand(time(NULL));
fg=0;
}
return (double)(rand()%900+100)/100;
}
int main(void)
{
int i;
for (i = 0; i < 10; i++) //输出10个[1.00,10.00]区间内的小数
printf("%.2f\n",rnd());
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
⑹ C语言中用#include<time.h>的头文件,srand((unsigned)time(NULL)),如何产生随机小数
得到整数后再转化成浮点数,最后除以10、100或1000即可。
编程要学会变通,模板函数不可能考虑所有可能的,不然还用你来写代码编程干什么。
⑺ 在C语言中,怎样产生一个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之间随机数的
式子
了.
⑻ 如何用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得到的数取绝对值就可以了。
⑼ C语言中用#include<time.h>的头文件,srand((unsigned)time(NULL)),如何产生随机小数
这个应该符合你的要求了:
#include
#include
#include
double
rnd(void)
{
static
int
fg=1;
int
rd;
if
(fg)
{
srand(time(NULL));
fg=0;
}
return
(double)(rand()%900+100)/100;
}
int
main(void)
{
int
i;
for
(i
=
0;
i
<
10;
i++)
//输出10个[1.00,10.00]区间内的小数
printf("%.2f\n",rnd());
return
0;
}
运行结果:
6.71
8.54
7.80
3.07
4.24
2.13
3.34
7.84
2.06
4.70
Press
any
key
to
continue
⑽ c语言中如何生成1个0到1的随机数
C语言中生成1个0到1的随机数可以执行语句:float b=rand()/(RAND_MAX+1.0);
解析:
标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;
用函数rand取得的随机数除以(RAND_MAX+1.0),即可确保得到的结果在0到1之间。ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。
(10)c语言随机产生小数扩展阅读:
相关说明:
1、因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。
2、为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。
3、随机种子(Random Seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。