c语言随机数的产生,c语言生成指定范围的随机数

  c语言随机数的产生,c语言生成指定范围的随机数

  刚找这个资料,看到一个不错的,就把全文翻了一遍。后来找不到了。

  在C语言中,通过rand函数可以得到一个“伪随机数”。该数字是一个大于或等于0且小于或等于RAND_MAX的整数。rand函数和常量RAND_MAX在库stdlib.h中定义,这意味着库stdlib.h必须包含在头文件中才能使用RAND函数和常量RAND_MAX。

  rand函数被声明为:

  整数(无效)

  //代码示例开始

  #包括

  #包括

  int main()

  {

  printf(%d %d\n ,rand(),rand());

  }

  //代码示例结束

  编译上面的代码,屏幕上会显示两个随机数。但是运行这个程序很多次后,你会发现每次程序启动后产生的两个随机数是一样的!可见rand()产生的值不是随机的。

  标准库(stdlib)中随机数的一种可能实现如下:

  //代码示例开始

  #定义RAND_MAX0x7fff

  无符号长整型next=1;

  整数(无效)

  {

  下一个=下一个* 1103515245 12345;

  return(unsigned int)(next/65536)% RAND _ MAX;

  }

  /*srand函数:设置rand函数的种子数量*/

  void srand(无符号整型种子)

  {

  next=种子;

  }

  //代码示例结束

  从上面可以看出,只要我们在程序运行之初用srand设置不同的nex值,程序每次运行都会得到不同的或者随机的序列。你如何把不同的数字传递给srand?随机数?好了,现在是下蛋和下鸡的问题了。其实没那么复杂。我们只需要将当前时间作为srand的参数传入即可。程序每次运行,时间点肯定不一样。

  要获得当前时间,可以使用时间库中的时间函数。例子如下:

  //代码示例开始

  #包括

  #包括

  #包括

  int main()

  {

  srand((int)time(0));

  printf(%d %d\n ,rand(),rand());

  }

  //代码示例结束

  通过编译上面的代码,程序每次运行都能得到不同的随机值。

  程序中time(0)函数的返回值类型为time_t(time_t定义为长整数),time(0)返回从1970年1月1日到现在经过的时间,单位为秒。

  好了,到目前为止,我们已经解决了如何在区间[0,RAND_MAX]内以等概率随机获取一个整数的问题。那么,如何等概率随机获取任意范围内的整数呢?其实我们只需要对rand()函数产生的随机数取模即可。请参考以下代码:

  int a=rand()% 100;

  int b=rand()% 20 5;

  执行上述代码后(当然之前要调用srand函数),得到的整数A是在[0,100]范围内的均匀随机整数;并且得到的整数B是区间[5,25]内的均匀随机整数。

  但接下来我们不禁要问:如何生成随机浮点数?其实很简单。如果用rand()生成的数除以RAND_MAX,难道不能得到0到1之间的浮点数吗?而要得到区间[a,b]的浮点数,用这个值来扩展不是很好吗?例如s=RAND()/RAND _ MAX;s=a(b-a)* s;这样我们就可以得到我们想要的随机数s。好了,如果我们想得到一个区间[3,5]之间的随机浮点数,那么就很简单了。代码如下:

  //代码示例开始

  #包括

  #包括

  #包括

  int main()

  {

  float s;

  srand((int)time(0));

  s=RAND()/RAND _ MAX;

  s=3(5-3)* s;

  printf(%f\n ,s);

  }

  //代码示例结束

  快跑,好的。为什么每个程序运行的结果都是3.0?程序逻辑没毛病吧?

  在倒数第二行设置断点调试器,我们会发现第一次赋值s后,s的值为0.0。反复运行程序进行调试,s值为0.0。为什么s的值总是0.0?

  原来在C语言中,如果/运算符两边都是整数,那么运算的结果也是整数,而且是向下取整的整数。也就是2/3得0,3/2得1。而且由于rand()得到的值总是小于RAND_MAX,所以表达式rand()/RAND_MAX只能得到整数0,在赋给s时强制转换为浮点数0.0。

  为了让/运算符执行浮点运算,我们可以将/运算符的操作数转换为浮点数。比如:(float)rand()/rand _ max;这样,我们就能得到想要的结果。正确的例子如下:

  //代码示例开始

  #包括

  #包括

  #包括

  int main()

  {

  float s;

  srand((int)time(0));

  s=(float)RAND()/RAND _ MAX;

  s=3(5-3)* s;

  printf(%f\n ,s);

  }

  //代码示例结束

  【程序设计与开发】C语言中随机数rand使用注意事项

  【程序设计与开发】C语言标签中随机数rand使用注意事项:【程序设计与开发】免责声明:引用请注明出处。http://blog.csdn.net/lg1259156776/描述:随机数在编程和开发中非常重要,在C语言中.

  C语言中与随机数相关的问题

  rand函数。srand函数。和宏RAND_MAX(32767)是C语言中用来生成随机数的,都是在stdlib中声明的。h . int rand(void);//生成一个随机数voidsrand.

  Python中随机数的生成

  要在Python中实现随机数的生成,我们需要使用random模块中的randint方法。具体实现方法如下:导入随机a=random.randint (1,20) # (1,20)为.

  Cplusplus中随机数的生成

  1.随机数由生成器和分配器组合生成。生成器:可以生成离散的等可能分布。分布:它可以将generator生成的均匀分布值映射到其他常见的分布,比如均匀分布u。

  用C语言产生随机数randlparrpar功能

  参考:C语言生成随机数1:如果只需要生成随机数,不需要设置范围,可以只使用rand (): rand()会返回一个随机数,范围从0到RAND_MAX。RAND_MAX在stdl中定义。

  如何在C语言中生成随机数

  今天看到一个用随机数的小程序。刚发现C语言生成随机数没有matlab那么简单。C中也有rand()函数,但rand()函数生成的数不是真随机数,而是伪随机数,而且是基于一个数的。

  js中的Mathperiodrandomlparrpar生成一个具有指定值范围的随机数。

  http://www.111cn.net/wy/js-ajax/57062.htms数学。Random()方法大家都知道,它是用来生成随机数的。但是,《通用参考手册》并没有说明如何使用这种方法。

  C语言中0-1随机数输出的实现

  原文:用C语言实现0-1的随机数输出。今天晚上同学问了我一个很简单的问题,问我如何用C语言输出0-1的随机数。更别说,我一时半会想不起来。在写的过程中,我发现直接调用random函数是无法实现的。

  如何用C语言写一个简单便携的随机数生成器?

  在C语言中,标准库中随机数生成函数的返回可能不是最优的,因为有些随机数生成器的低位不是随机的,而其他返回随机数的函数实现太复杂。所以rand()%N不是一个好方法,牛人给出的建议是用:ra.

  随机推荐

  Linux安装(使用Centos6period3)

  1.什么是虚拟机?虚拟机是指由软件模拟的、具有完整硬件系统功能的完整计算机系统。它运行在完全隔离的环境中。2.安装Linux虚拟机之前要做的准备工作。2.1:windows环境下的PC。2.2:下载虚拟机.

  后缀POJ 3974回文ampsemiampsemi乌拉尔1297回文

  寻找给定字符串的最长回文子串的分析:做法是将原字符串倒置后构造一个新的字符串为原字符串(这样就方便找到两边回文后缀的最长前缀),即newS=S $ revS,枚举回文。

  Cplusplus引物冒号;冒号;第十四章冒号;重载运算符匹配类型转换运算符和类型转换的重载。

  类型转换运算符class smallint { public:smallint(int I=0):val(I){ if(i0 i255)throw ST.

  Git ~添加远程仓库~ git

  现在,当您在本地创建了一个Git存储库之后,您希望在Github中创建一个Git存储库,并远程同步这两个存储库,这样Github上的存储库可以作为备份,其他存储库可以通过该存储库。

  Java遇到错误

  1.找不到java.io.file异常:/storage/emulated/0/XXX . txt:open failed:EIS dir(isa目录)This.

  导入更大的wordpress xml文件

  最大大小由两个PHP设置控制:upload_max_filesize和post_max_size。这些ar.

  Css选项卡

  据说css标签有两个实现:1 .目标css3 2。描点2的核心原理是用描点来显示问题(描点父溢出)。

  Gitlab自动触发Jenkins构建打包。

  1.目的在部门的测试环境中,一旦开发者向gitlab仓库提交成功的代码,gitlab就会自动触发jenkins构建项目。当然,在构建之后,您还可以添加用于项目部署或自动化测试的脚本。这只是针对测试环境。2.

  HDU 3507打印文章

  题目:http://acm.hdu.edu.cn/showproblem.php? Pid=3507问题解答:斜率优化DP是入门题,我就不给出解答了。网上有很多解释。这里只是一个小问题(.

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: