随机函数循环生成-1或1(C代码)

来源:互联网 发布:java 文件生成md5码 编辑:程序博客网 时间:2024/06/07 13:29

今天代码中用到一个随机函数,要循环生成-1或1,无奈C语言没有专门的函数直接生成,只能自己写了。参考了网上资料后,记录下来,将代码编写如下:

#include <stdlib.h>#include <stdio.h> #include <time.h>int main(){ int i,r,x;        srand(time(NULL));    //时间种子for(i=0;i<100;i++){x=1 + (int)rand() % 10;if (x<=5) r=-1;else r=1; //printf("x=%d\n",x);printf("r=%d\n",r);}    return 1;}

这里注意一下必须设置时间种子,否则每次生成数都一样。

另外一个是跟踪调试时发现的,如果是有for循环调用这个随机生成函数,时间种子必须在for循环外面,不然的话将会出现一连串-1和一连串1的现象,没有达到随机的效果。

随机函数原理摘录如下:

//要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; //要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; //要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; //通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 //要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。 //要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)  //stdlib.h头文件中宏定义 #define RAND_MAX 0x7fff ,0x7ff即十进制32767



0 0
原创粉丝点击