C++/C语言 画一个圆(带ai怎么画圆环宽度相等的圆弧)

C语言/C++中如何产生随机数
字体:[ ] 类型:转载 时间:
这里要用到的是rand()函数, srand()函数,和time()函数。需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件
C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数。
需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件。
使用rand()函数获取一个随机数如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为。
例子1.1: 代码如下:#include&iostream&int main(){&for(int i=0;i&10;i++)&{&&cout&&rand()&&&}}结果:
使用rand()函数获取一定范围内的一个随机数
如果想要获取在一定范围内的数的话,直接做相应的除法取余即可。
例子2.1: 代码如下:#include&iostream&int main(){&for(int i=0;i&10;i++)&{&&//产生10以内的整数 &&cout&&rand()%10&&&}}结果:
我们上面获取的都是随机的整数,那么如何获取小数呢?例如:我们可以先获得10001以内的整数(0~10000),然后再用这个整数除以10000得到小数点后两位的小数。
例子2.2: 代码如下:#include&iostream&int main(){&for(int i=0;i&10;i++)&{&&cout&&(rand()%1.0&&&}}注意10000.0后面的有个小数点,表示结果为浮点数。
使用rand函数和time函数我们上面已经可以获取随机数了,为什么还需要使用time函数呢?我们通过多次运行发现,该程序虽然生成了10个随机数,但是这个10个随机数是固定的,也就是说并不随着时间的变化而变化。
这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。
上面的例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
srand()函数定义 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值来当做seed
如果你用time(0)的话,要加入头文件#include&ctime&
time(0)或者time(NULL)返回的是系统的时间(从午夜算起),单位:秒
例子3.1: 代码如下:#include &iostream&#include &ctime&
void main(){&&a=time(0);//time(0)返回的是系统的时间(从午夜算起),单位:秒&cout&&a&&}例子3.2: 代码如下:#include&iostream&#include&ctime&int main(){&srand(time(0)); &for(int i=0;i&10;i++)&{&&//产生10以内的整数 &&cout&&rand()%10&&&}}这样做的话,每次运行的结果就都不一样了。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。C语言&inf和nan
inf :infinity
(linux)&&等同于&&
#INF:infinity& (windows)
nan :not a
number&&&&&等同于&&&&&
#IND:indeterminate (windows)
注意:1、inf一般是因为得到的数值,超出浮点数的表示范围(溢出,即阶码部分超过其能表示的最大值);而nan一般是因为对浮点数进行了未定义的操作,如对-1开方。
2、nan==nan
结果是0或false,即不能和nan进行比较,和nan进行比较得到的结果总是false或0。所以可以用函数:&&
int isNumber(double d){return
(d==d);}来判断d是否为nan,若d是nan则返回0,否则返回非零值。
&&&&&&3、1.0/0.0等于inf,-1.0/0.0等于-inf,0.0+inf=inf;
&&&&&&4、对负数开方sqrt(-1.0)、对负数求对数(log(-1.0))、0.0/0.0、0.0*inf、inf/inf、inf-inf这些操作都会得到nan。(0/0会产生操作异常;0.0/0.0不会产生操作异常,而是会得到nan)
5、得到inf时就查看是否有溢出或者除以0,得到nan时就查看是否有非法操作。
6、C语言的头文件&float.h&中,有定义的常量DBL_MAX,这个常量表示“能表示出来的最大的双精度浮点型数值”。&float.h&中还有常量DBL_MIN,DBL_MIN表示可以用规格化表示的最小的正浮点数,但DBL_MIN并不是最小的正浮点数,因为可以用可以用非规格化浮点数表示的更小。可以用函数:int
isFiniteNumber(double d){return
(d&=DBL_MAX&&d&=-DBL_MAX);}来判断d是否为一个finite数(既不是inf,又不是nan(加入d为nan,则d参加比较就会得到false(0)值))。
7、1.0/inf等于0.0。
8、inf是可以与其他浮点数进行比较的,即可以参与&=、&+、==、!=等运算。
下面这几个宏(用宏实现的,使用时跟函数的形式基本相同)是判断一个表达式的结果是否为inf、nan或其他:
头文件:include&math.h&
宏的用法(类似于函数原型):int fpclassify(x);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int
isfinite(x);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int
isnormal(x);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int isnan(x);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int isinf(x);
具体用法:
&&&&&&&&&&1、int
fpclassify(x)&
用来查看浮点数x的情况,fpclassify可以用任何浮点数表达式作为参数,fpclassify的返回值有以下几种情况。
&&&&&&&&&&&&&&&&&
FP_NAN:x是一个“not a number”。
&&&&&&&&&&&&&&&&&
FP_INFINITE: x是正、负无穷。
&&&&&&&&&&&&&&&&&
FP_ZERO: x是0。
&&&&&&&&&&&&&&&&&
FP_SUBNORMAL: x太小,以至于不能用浮点数的规格化形式表示。
&&&&&&&&&&&&&&&&&
FP_NORMAL: x是一个正常的浮点数(不是以上结果中的任何一种)。
2、int isfinite(x)&
当(fpclassify(x)!=FP_NAN&&fpclassify(x)!=FP_INFINITE)时,此宏得到一个非零值。
3、int isnormal(x)&
当(fpclassify(x)==FP_NORMAL)时,此宏得到一个非零值。
4、int isnan(x)&&
当(fpclassify(x)==FP_NAN)时,此宏返回一个非零值。
&&&&&&&&&&5、int
isinf(x)&&&当x是正无穷是返回1,当x是负无穷时返回-1。(有些较早的编译器版本中,无论是正无穷还是负无穷,都返回非零值,不区分正负无穷)。
&&&&&&&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 圆锥滚子轴承宽度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信