`
leiyonglin
  • 浏览: 52243 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

php随机数rand和mt_rand

    博客分类:
  • php
php 
阅读更多

今天想写个扔骰子并统计点数概率的小程序,使用如下方法生成随机数


最后发现无论进行多少次循环,始终不出现 6个4、6个5 , 6个3和6个6最常出现,不知道这是为什么,最后在手册上找到mt_rand()方法并且不会出现此类问题

 

mt_rand() 使用 Mersenne Twister 算法返回随机整数,mt_rand()是rand()的一个非正式的替代品。

 

说明

 

如果没有提供可选参数 minmax,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

 

 

 

 

分享到:
评论

相关推荐

    PHP随机数函数rand()与mt_rand()的讲解

    两种函数的基本语法都是相似的:通过提供最小值和最大值两个可选参数来指定随机数的范围,如果省略这两个参数,则返回的是从0到RAND_MAX之间的一个随机整数。RAND_MAX是在PHP中预定义的一个常量,它定义了rand()函数...

    PHP中函数rand和mt_rand的区别比较

    如果不提供这两个参数,`mt_rand()` 将返回0到`RAND_MAX`之间的随机数,而`RAND_MAX`的值取决于PHP的实现。在某些平台上,如Windows,`RAND_MAX`可能相对较小,只有32768。在这种情况下,如果需要更大的范围,使用`...

    php中mt_rand()随机数函数用法

    说明:如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 rand_max 之间的伪随机数,例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5,15). 在 3.0.7 之前的版本中,max 的含义是 range,要在这些版本中...

    CPP随机数_随机数生成_

    `<cstdlib>` 包含了 `rand()` 函数,可以生成0到RAND_MAX之间的伪随机数,而 `<random>` 头文件则提供了更现代、更灵活的随机数生成器。 在 `<random>` 库中,随机数生成器主要有以下几类: 1. **线性同余法生成器...

    PHP mt_rand 伪随机数安全探讨 .pdf

    一旦播种,`mt_rand_is_seeded`将被设置为1,确保后续不再播种,从而保证了同一句柄内的随机数一致性。 然而,这种设计在某些情况下可能导致安全问题。例如,如果攻击者能够获取到`mt_rand`生成的随机数序列,理论...

    php中随机函数mt_rand()与rand()性能对比分析

    如果不指定min和max,则rand()函数将返回一个0到RAND_MAX之间的伪随机整数。需要注意的是,在PHP 4.2.0之后的版本中,rand()函数的随机数发生器会自动播种,不再需要手动调用srand()函数来进行播种。 另一个随机...

    随机数rand

    在实际应用中,还可以使用更高级的随机数生成库,如C++11引入的 `<random>` 头文件,提供更高效、更精确的随机数生成器,如 `std::mt19937` 伪随机数生成器和各种分布类,如 `std::uniform_int_distribution` 或 `...

    深入理解PHP中mt_rand()随机数的安全

    在前段时间挖了不少跟mt_rand()相关的安全漏洞,基本上都是错误理解随机数用法导致的。这里又要提一下php官网manual的一个坑,看下关于mt_rand()的介绍:中文版^cn 英文版^en,可以看到英文版多了一块黄色的 Caution ...

    php获取随机数的三种方法以及效率比较

    在效率比较方面,通常`rand()`和`mt_rand()`的执行速度相当,但在大规模或频繁生成随机数的场合,`mt_rand()`可能稍快一些。然而,`random_int()`由于其底层实现的复杂性,可能在速度上慢于前两者,但其提供的安全性...

    基于php 随机数的深入理解

    如果不提供这两个参数,`mt_rand` 默认会返回0到`RAND_MAX`之间的随机数。`RAND_MAX` 是PHP中的一个常量,表示随机数的最大值。 在实际编程中,有时候需要生成特定长度的随机字符串,这可以通过自定义函数实现。...

    php lcg_value与mt_rand生成0~1随机小数的效果对比分析

    首先,在这篇标题为"PHP lcg_value与mt_rand生成0~1随机小数的效果对比分析"的文章中,我们探讨了两种不同的随机数生成方法:lcg_value()和mt_rand()。在这两个函数中,它们都能生成0到1之间的随机小数,然而它们的...

    密码找回的伪随机数(php代码实现)

    `rand()`函数使用C语言的随机数生成器,而`mt_rand()`使用Mersenne Twister算法,它具有更高的随机性和更长的周期,因此在需要大量随机数时推荐使用`mt_rand()`。 以下是一个简单的PHP代码示例,用于生成一个用于...

    php随机数字代码_.docx

    如果不提供参数,`rand()`将返回0到RAND_MAX之间的随机数,RAND_MAX是PHP预定义常量,表示`rand()`函数能产生的最大随机数。 然而,为了使`rand()`函数每次运行时都能产生不同的随机数,我们需要使用`srand()`函数...

    ch3_随机数的产生_

    这个函数返回一个介于0(包含)和`RAND_MAX`(不包含)之间的整数。`RAND_MAX`是一个常量,表示`rand()`函数能够产生的最大值,其值依赖于具体的实现。为了初始化随机数种子,我们可以调用`srand()`函数,它接受一个...

    高质量的c++随机数生成方法

    在C++中实现MT19937,我们首先需要定义一个结构体来存储算法的状态,并实现初始化和随机数生成的方法。以下是一个简单的实现: ```cpp #include // Mersenne Twister算法的状态大小 const int32_t MT_N = 624; ...

Global site tag (gtag.js) - Google Analytics