健康新闻

当前位置:必赢体育53522官方网站 > 健康新闻 > 走进围城V,随机函数

走进围城V,随机函数

来源:http://www.sunrisehiLLfarm.com 作者:必赢体育53522官方网站 时间:2019-09-21 19:53

婚姻的基础是互相尊重. 没有相互的理解和体谅就会产生本来不应产生的矛盾.还是我的母亲说的好, 凡是要讲个道理.

javascript表单事件汇总

  1。onabort(ns3,ns4,ie4):当用户终止正在打开的网页时产生该事件。
2。onblur(ns3,ns4,ie3,ie4):某元素失去活动焦点时产生该事件。例如鼠标在文本框中点击后又在文本框外点击时就会产生。
3。onchange(ns3,ns4,ie3,ie4):当网页上某元素的内容发生改变时产生。例如在文本框中输入文本后又在文本框外点击时就会产生。
4。onclick(ns3,ns4,ie3,ie4)单击网页上的某元素时产生
5。ondblclick(ns4,ie4):双击网页上的元素时产生
6。onerror(ns3,ns4,ie4):浏览器在打开网页的过程中发生错误时产生该事件
7。onfinish(ie4):滚动文本条中的文本完成一次滚动时产生的事件
8。onfocus(ns3,ns4,ie3,ie4)网页上的元素获得焦点时产生该事件
9。onkeydown(ns4,ie4)按下任意键时产生该事件
10。onkeypress(ns4,ie4)按下任意键时并释放该键产生的事件
11。onkeyup(ns4,ie4)释放按下的按键产生该事件
12。onload(ns3、4,ie3、4)网页或图象调入完成后产生该事件
13。onmousedown(ns4,ie4)在网页的某元素上按下鼠标时产生该事件
14。onmousemove(ie3、4)在网页的某元素上移动鼠标时产生该事件
15。onmouseout(ns3、4,ie4)从网页的某元素移出鼠标时产生该事件
16。onmouseover(ns3、4,ie3、4)鼠标移入网页的某元素时产生该事件
17。onmouseup(ns4,ie4)释放按下的鼠标时产生该事件
18。onreset(ns3、4,ie3、4)复位表格时产生该事件
19。onresize(ns4,ie4)改变浏览器时产生该事件
20。onselect(ns3、4,ie3、4)选择文本框中的文本时产生该事件
21。onstart(ie4)滚动文本条中的文本开始滚动时产生该事件
22。onsubmit(ns3、4,ie3、4)提交表单时产生该事件
23。onunload(ns3、4,ie3、4)从当前的网页退出时产生该事件

本文主要讨论大范围内随机数的产生办法,讨论在随机范围内的...

 

  近日在做一个入职练习中,我遇到了随机数的问题,将分析过程做些整理。

  本文主要讨论大范围内随机数的产生办法,讨论在随机范围内的等概率问题。 一,要求   1, 产生一个比较大的随机数。   2, 产生的随机数在随机范围内等概率。 二,知识背景   我们知道在C语言中有rand()函数可以提供随机数,rand()函数的范围为0到32727。我们假定认为rand()产生的随机数在0到32727范围内是等概率的。如果我们需要得到一个小范围内的随机数,比如0到55之间的随机数,那我们可以采用rand()%55。但是对于我们要得到一个更大范围内的随机数,rand()便满足不了我们的要求。 三,探讨过程   1,两个rand相乘   假设我们要产生一个10亿内的随机数,想到rand()可以产生0到32727,那么我们可以采用rand()*rand(),刚好能达到10亿的范围。 可是我们不难发现rand()*rand()会有问题,最大的问题是在规定范围内产生的随机数概率不等,比如一个大于32727的素数,就永远产生不了。而对于很多合数,出现的频率会非常高。   2,按位组合   首先我们找到上限数字的位数,然后对每一位产生一个0到9的随机数,并将产生的一系列0到9的数字组合起来。假设我们要产生一个10亿内的随机数,也就是我们需要产生0到999999999之间的随机数,我们首先求得999999999的位数是9位,然后我们产生9个数字,并将他们组合成一个9位数。比如:872345671,023478652。   看上去没有什么问题,我们很好地解决了一个特别的随即范围,即10亿内。假如我们现在要产生一个60000内的随机数,也就是需要产生一个0到59999之间的数。如果我们按照上述办法,如果产生的数字大于59999,同时也是5位数,比如97863,我们该怎么办?   3,求余法   我们最先想到的是,如果产生的数字98763)对范围60000)求余,对一个数字求余,所得到的结果肯定是落在该数字的范围内。   不难发现,我们这里同样有概率问题。对于40000到60000之间的数字,出现的概率为1/100000,对于0到40000之间的数字,出现的概率为2/100000,因此概率不等。   4,逐位检验法   我们将上限数字的逐位取出来,我们逐个产生0到该数字的随机数。对于产生0到59999只的随机数,我们先取第一位:5,我们产生一个0到5之间的随机数,第二位:9,我们产生0到9之间的随机数,最终组合出的5位则是0到59999之间。   我们发现,这也只能解决特殊的数字范围。如果我们要产生一个0到51782之间的随数,这个方法就失效了。比如33216这个数字就产生不了,因为33216第二位3比范围51782)第二位1大,永远产生不了。   5,丢弃法   同样地,我们首先依然采用组合法产生一个规定位数的数据,如果我们发现我们产生的数字在我们的范围之外,那我们选择丢弃该数据,继续产生随机数,一直到我们产生我们在范围内的随机数。不难证明,丢弃一个不正确的数字本身并不影响产生正确数字的概率。   因此,采用按位组合法+丢弃法能满足我们的要求。   这里只讨论了随机数的上线,对于随机数的下限同理。   四,源码实现  

 //产生一个0到9的随机数  static __inline int min_rand()  {      return rand()%10;  }   /*************************************************************/  /*   函数作用:产生一个range范围内的随机数                   */  /*   参数1,range:取随机数的范围                            */  /*   返回:返回取得的数据                                    */  /*************************************************************/  int my_rand(const int range)  {      short bit = 0; //纪录位数      int tempt = range;      int rand_data = 0;       while ( tempt > 0 )       {          bit++;          tempt = tempt/10;      }       while (bit--)          rand_data = 10*rand_data + min_rand();//组合随机数       if (rand_data >= range)          return my_rand(range);//产生随机数不符合范围,继续       return rand_data;  } 

本文出自 “邹辉” 博客,请务必保留此出处

本文由必赢体育53522官方网站发布于健康新闻,转载请注明出处:走进围城V,随机函数

关键词:

上一篇:痴情如我,也会为你长大

下一篇:没有了