c中的随机函数,c++的随机函数

  c中的随机函数,c++的随机函数

  第一,随机函数不是ANSI C标准,所以不能在gcc,vc等编译器下编译传递。可以用c中的rand函数来代替实现。

  1.c标准函数库提供了一个随机数生成器rand,它返回0-rand _ max之间均匀分布的伪随机整数。RAND_MAX必须至少为32767。rand()函数不接受参数,默认为1作为种子(即起始值)。随机数生成器总是从同一个种子开始,所以形成的伪随机数列是一样的,失去了随机的意义。(但这样便于程序调试)

  2.C中的另一个函数srand()可以指定不同的数字(无符号整数参数)作为种子。但如果种子一样,伪随机数列也一样。一种方式是让用户输入种子,但还是不太理想。

  3.最理想的是使用一个可变的数字,比如时间,作为随机数生成器的种子。时间的价值每时每刻都不一样。所以种子不一样,所以产生的随机数也不一样。

  //C随机函数(VC程序)

  #包含stdlib.h

  #包含iostream.h

  #包含时间. h

  #定义最大100

  void main()

  {

  srand((无符号)时间(空));//函数//srand()从当前时间开始生成一个随机种子。

  for(int I=0;我我)

  cout rand()% MAX endl;//MAX为最大值,其随机域为0~MAX-1。

  }

  二、兰德()的用法

  Rand()不需要自变量,它会返回0到最大随机数之间的任意整数,最大随机数的大小通常是一个固定的大整数。这样,如果要生成从0到10的10个整数,可以表示为:

  int N=rand()% 11;

  这样,n的值就是一个从0到10的随机数。如果要生成1到10,情况是这样的:

  int N=1 rand()% 10;

  综上所述,可以表述为:

  一个rand() % n

  其中a是起始值,n是整数的范围。如果想要一个从0到1的小数,可以先得到一个从0到10的整数,然后把它们除以10得到10个随机小数。如果想得到一个从10到100的随机小数,需要得到10个从0到100的整数,然后除以100。其他情况取决于

  诸如此类。

  通常情况下,rand()每次运行时生成的随机数都与最后一个相同。这是为了方便程序的调试而特意设计的。要每次生成不同的随机数,可以使用srand(种子)函数将其随机化。不同的种子可以产生不同的随机数。

  我们都说过了,还可以包含time.h的头文件,然后用srand(time(0))用当前时间随机化随机数发生器,保证每两次运行(只要两次运行间隔超过1秒)就能得到不同的随机数序列。

  注意:rand()在0到RAND_MAX上产生一个随机数(32767),而32767不能被11整除。

  因此int N=rand()% 11;得到的随机数从0到10不是均匀分布的,取9和10的概率比取0到8的概率少11/32767,约为1/2978;

  所以,要取0~M的随机数,M小的话问题不大,但是M大的时候,比如M=30000,取0-2767的概率是取最后几个数的两倍,严重不符合随机分布!

  第三,按要求设置概率。

  比如设一个10%的概率问题,我们可以用rand()函数来实现。在if条件句判断中,由rand ()%获得的值是一个设定值,然后与另一个值做“==”运算。

  if(1==rand())

  {//达到10%的概率,在此编辑其余代码}

  {//90%的失败概率,其余代码在此编辑}

  

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

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: