问:
C语言中产生随机数的函数是什么?
C语言中产生随机数的函数是什么?(好象有两个)以及这两个函数的头文件是什么?
问题补充:rand和srand有什么区别没?
答:
#include <stdio.h> #include <stdlib.h> #include <time.h> void main() { int i; srand((unsigned)time(NULL)); i = rand() % 100; } 这样产生的随机数就是0-99之间的, 这二个函数的工作过程如下: 1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535; 2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间) 3) 根据需要多次调用rand(),从而不间断地得到新的随机数; 4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
------------------------------------------------------------------------------------------------
#include <stdlib.h> #include <stdio.h> #include <time.h> int i=0; float n; int n1; while(i<1) { n=rand(); if(n>0&&n<10.0) i++; } n1=(int) n;
------------------------------------------------------------------------------------------------
调用rand()函数需要的头文件是 <stdlib.h>
#include <stdlib.h> #include <stdio.h> #include <time.h>
void main( void ) { int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )//产生10个随机数 printf( " %6d/n", rand() ); }
------------------------------------------------------------------------------------------------
算法2:线性同余法 1)将种子设为X0, 2)用一个算法X(n+1)=(a*X(n)+b) mod c产生X(n+1) 一般将c取得很大,可产生0到c-1之间的伪随机数 该算法的一个缺点是会出现循环。 给个C的程序 unsigned int seed = 0; //seed 为种子,要设为全局变量 void mysrand(int i) //初始化种子 { seed = i; }
int myrand() //产生0--32767之间的随机数 { seed = (1000*seed+2008) % 32768; return seed; }
调用实例 #include <time.h> main() { int a; mysrand(time(0)); a = myrand(); return 0; }
------------------------------------------------------------------------------------------------
下面关于一个另问题的解答:
C语言库函数中的rand()的用法??
#include <stdlib.h> #include <stdio.h> #include<conio.h>
int main(void) { int i;
printf("Ten random numbers from 0 to 99/n/n"); for(i=0; i<10; i++) printf("%d/n", rand()%100); getch(); return 0; } 为什么每次运行的结果都是一样的??关了重启结果还是一样!! 这结果哪像是随机啊?!! 求高手帮忙解释一下这个库函数的用法?如果能解释一下上面结果不随机问题最好.谢谢!
答:
函数rand所产生的随机数实际上是伪随机数,即反复调用函数rand所产生的一系列数似乎是随机的,但每次执行程序所产生的序列则是重复的。要产生真正的随机数序列,必须在每一次运行前为rand函数提供不同的种子,这是由srand函数提供的。 所以加上srand(time(NULL))就可以产生真正的随机数了。
#include <stdlib.h> #include <stdio.h> #include<conio.h> #include <time.h>
int main(void) { int i; srand(time(NULL));
printf("Ten random numbers from 0 to 99/n/n"); for(i=0; i<10; i++) printf("%d/n", rand()%100); getch(); return 0; }
------------------------------------------------------------------------------------------------
在C51下的随机数生成
/*--------------------------------------------
*描述: 在Windowsserver2003,vs.net2003下调试通过 * *作者:e.Studio·zhzkl *参考:rfc4122 *-------------------------------------------*/ #i nclude<stdio.h> #i nclude<stdlib.h> #i nclude<conio.h>
#defineA3
intAdvancedLinearCongrutial(intx,inta,intb,intc,intm,intmax);
intmain(intargc,char*argv[]) { char*nums=argv[1];//取得参数 charmynums[10];//预定义10位长度的字符数组,单片机为8位应该不会超过这个范围了 intres=0,pos=0,length=0;
//将字符流转换为Int // while(nums[pos]!='/0') { length=length+1; pos=pos+1; } pos=0; length=length-1;
while(nums[pos]!='/0') { mynums[length-pos]=nums[pos]; pos++; }
pos=0; while(nums[pos]!='/0') { intm=1; for(intk=0;k<pos;k++) { m=m*10; }
res=res+(mynums[pos]-48)*m; pos=pos+1; }
//定义随机种子 // srand(res); intx=rand(),a=2,b=3,c=5,m=65536;
//改进的线性同余算法 inti=AdvancedLinearCongrutial(x,a,b,c,65536,rand()%100); printf("i=%d",i); printf("/tres=%d",res); returni; }
//改进的线性同余算法 intAdvancedLinearCongrutial(intx,inta,intb,intc,intm,intmax) { for(inti=0;i<max;i++) { a=A; for(intj=0;j<i;j++) { a*=A; } x=(a*x+(a-1)*c/b)%m; }
returnx; }
|
相关推荐
C语言产生随机数C语言产生随机数
用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用c语言产生随机数.doc 用...
C语言实现产生随机数的四则运算小程序
C语言如何产生随机数[借鉴].pdf
使用 C 语言产生正态分布的随机数。给出了全部的源代码。产生的随机数保存在文本文件中,并给出了 MATLAB 直方图验证的源代码。
本资源有三个c程序产生服从高斯分布的随机数,瑞利分布的随机数,以及泊松分布的随机数,并用matlab产生图形,分析理论值和仿真值。
c语言编程过程中怎样产生随机数。rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样...
收集的一些常见c随机数算法实例 !免积分
C语言线性同余法产生随机数 一个简单的例子:a=7, c=1, m=13, and seed=5 一个复杂的例子:a=69069, c=0, m=2^32=4294967296, seed=31
c语言学习资料,数据结构简单练习题,产生随机数并求亲自的最大值
本文档详细叙述了srand 和 rand 函数的使用方法和注意事项
深入理解随机数的产生——用c语言产生随机数rand()
这是用C语言描述的,产生随机数的代码,希望能有所帮助。
使用C语言中的分支及循环结构,及rand、srand、time函数实现了随机数的生成,进而实现猜数字游戏。 通过该文件,玩家可以通过输入数字1或0决定是否开始玩游戏,进入游戏后,根据所猜测的数值与游戏内产生的随机数...
C语言C++中怎样产生随机数.pdf
该文档囊括了几乎所有的产生随机数的方法,并有大量的实例,浅显易懂。
C语言C 中怎样产生随机数
最近上通信建模这门课时范平志老师布置的这个作业,我做好后传上来方便后人参考,包括了三个C语言程序,分别产生服从正态分布、瑞利分布、泊松分布的随机数。程序是是用的C语言编写,备有大量注释,浅显易懂,且全部...