用PHP生成随机数(另附PHP随机函数).docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用PHP生成随机数(另附PHP随机函数)

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度。 function randomkeys($length){ $pattern = 1234567890abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./amp;l t;gt;?;#:@~[]{}-_=+)(*amp;^%$£!; //字符池 for($i=0;$ilt;$length;$i++) { $key .= $pattern{mt_rand(0,35)}; //生成php随机数 } return $key;}echo randomkeys(8);这个php随机函数能生成XC*=z~7L这样的字符串,够随机! 现在介绍另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤。 function randomkeys($length){ $output=; for ($a = 0; $a lt; $length; $a++) { $output .= chr(mt_rand(33, 126)); //生成php随机数 } return $output;}echo randomkeys(8);在第二个php随机函数里,先用mt_rand()生成一个介于33到126之间的php随机数,然后用chr()函数转化成字符。查看ascii码表就会发现,33到126代表的正是第一个函数中字符池里的所有字符。第二个函数和第一个函数功能相同,而且更简洁。 ?php //seed用户自定义函数以微秒作为种子 function seed() { list($msec, $sec) = explode( , microtime()); return (float) $sec; } //播下随机数发生器种子,用srand函数调用seed函数的返回结果 srand(seed()); //输出产生的随机数,随机数的范围为10-100 echo rand(10,100); ? 上面这个和下面这个不是没什么不同吗?都是随机输出10-100之间的数,新人学习,可能问的太简单了呵呵 ?php echo rand(10,100); ? mt_rand(10,100); srand是种子,如果不设的话默认是1 rand一般是利用种子做参数的一种固定的运算 你试一下就知道了,不设种子或者设一个固定的种子,运行rand 然后再关了浏览器再开,再运行rand 你会发现结果一直是一样的 但是如果用一个随机数做种子,那每次运行结果就近似于随机的 先说rand()函数吧,rand([int min], [int max]) 本函数从min和max之间取一个随机数。若没有指定随机数的最大及最小范围,本函数会自动的从0到RAND_MAX中取一个随机数。 但是如果只用rand()这个函数,随机数的乱度很大,每次在取随机数之前最好使用srand()函数,以配置新的随机数种子。 解释一下下面这个用法(一般都是这样用这两个函数的): srand((double)microtime()*1000000); $rand_number= rand(); microtime()返回了两个值:当前毫秒和时间戳,我们要提取随机数,只能从毫秒中取一个随机数,(double)microtime()就只返回当前的毫秒值。 microtime()是以秒为单位的毫秒数,因而值都是小数,乘以1000000将其换算为整数。 ;它们的工作流程如下: (1):首先,给srand()提供一个”种子”;,它是一个unsigned_int类型的值。 (2):_然后,调用rand(),它会根据提供给srand()的值返回一个随机数(范围在_0~32767之间) (3):根据需要多次调用rand(),不断得到新的随机数。 (4):无论什么时候可以给srand()提供一个新的“种子”,从而进一步“随机化”rand()的 输出结果。

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档