c语言随机函数源代码 c语言随机函数生成随机数

c语言,产生随机数的函数代码int randomnumber(int a,int b);//返回a到b之间的随机数,包括a,b#include stdio.h
#include stdlib.h
#include time.h
int randomnumber(int a,int b);
int main(void)
{
int a,b;
scanf("%d%d",a,b);
srand(time(NULL));
printf("%d\n",randomnumber(a,b));
return 0;
}
int randomnumber(int a,int b)
{
return rand()%(b-a+1)+a;
}
用C语言产生200到500随机数的代码#include
#include
#include
void
main()
{
int
i=0;
int
x=0,z=0;
double
y=0;
/*初始化随机产生器既rand()函数的初始值,即把种子的值改成t;*/
/*这样每次产生的
随机数
都不一样*/
time_t
t;
srand((unsigned)
time(t));
printf("产生200~500之间10个随机数:\n");
for
(;i10;i++)
{
x=rand()
%
100;//产生0~99的随机数
//
printf("%d
",x);//验证产生结果
y=((double)x
+
66.0)*
200.0/66.0;
/*通过数学计算写出等式,将0~99转换到200~500*/
//
printf("%f
",y);
//验证计算结果
z=(int)
y;
/*将结果转换成整数*/
printf("%d\n",z);
}
}
C语言怎样产生一定范围的随机数?编译环境为:vs2013
产生1到3的整型随机数的代码如下:
#includestdio.h
#includetime.h
#includestdlib.h
【c语言随机函数源代码 c语言随机函数生成随机数】#define max 3//这个函数的意义为:随机生成最大的数为3
#define min 1//这个函数的意义为:随机生成最小的数为1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min;// 这里的意义,“%”为模运算
printf("随机数为:%d\n", num);
system("pause");//这个代码可以让弹出的黑框不会一下就消失
return 0;
}
扩展资料:
根据密码学原理,随机数的随机性检验可以分为三个标准:
条件一、统计学伪随机性 。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等 。类似的标准被称为统计学随机性 。满足这类要求的数字在人类“一眼看上去”是随机的 。
条件二、密码学安全伪随机性 。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分 。
条件三、真随机性 。其定义为随机样本不可重现 。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数 。
随机数分为三类:
①伪随机数:满足第一个条件的随机数 。
②密码学安全的伪随机数:同时满足前两个条件的随机数 。可以通过密码学安全伪随机数生成器
计算得出 。
③真随机数:同时满足三个条件的随机数 。
关于C语言中的随机函数rand()的源代码~~到底怎么求出随机数的?。?/h2>return一句的功能只是把得数的绝对值控制在0~32767之间,关键是next = next * 1103515245 + 12345一句 。next变量是静态的,变化以后的值是不消失的,下一次还可用,所以每执行一次next = next * 1103515245 + 12345就获得一个新值,这个新值被return取整除、取余除后控制在0~32767之间就形成了0~32767的随机数 。比如第一次 , next=1*1103515245 + 12345=1103527590 , 经return中的对65536取整、对32768取余后就是16838;若再来一次,next已经是1103527590了,那么next = next * 1103515245 + 12345就为next = 1103527590 * 1103515245 + 12345=1217759518843121895;但这个数已经溢出了,实际上表示成了-1770082073,经return中取整取余后返回的就是-27009;可以算出来,再下一次是10113……不过,你这个函数并不能产生真正意义上的“随机”数,因为作为基数的1103515245在每次开始时是不变的,所以只能得出同样的序列,即每次执行都产生16838、-27009、10113……这样一组无限多的数 。所以实际的C随机函数rand()的形参并不是void而是一个长整型变量,通常来调用实时时间函数获取实时时间值来得到,因为时间是每时每刻都在变化的,所以充当"1103515245”角色的数就每调用一次的值都不同 。这样每次执行就都能得到不重复的序列 。至于12345 , 我想随便取个数都行!仅供参考……

推荐阅读