gpt4 book ai didi

PHP - 伪随机数生成器?

转载 作者:可可西里 更新时间:2023-10-31 22:43:31 25 4
gpt4 key购买 nike

在过去的几天里,我一直在努力寻找一种基于种子在 PHP 中生成随机数的好方法。我相信你们中的大多数人已经知道,php rand() 方法在某些情况下过于随机,我真的需要一个 PRNG,它可以让我根据种子一遍又一遍地生成相同的序列号。

我已经尝试过使用 XORShift PRNG,问题在于不同的操作系统似乎会生成不同的答案,因为 PHP 如何处理位移位。

我需要某种适用于 PHP 的算法,它能够生成相当大的数字,因为无论如何我都会在它前面放一个零并将它变成一个小的 double 。 (0.兰德)

最佳答案

mt_srand(42);

echo mt_rand(1, 100);
echo mt_rand(1, 100);
echo mt_rand(1, 100);

这会在我的系统上生成序列 64、80、96。每次执行此代码时它都会这样做。您使用特定数字(此处为 42)为生成器播种一次,然后一次又一次地调用生成器以生成一个随机数。


随机数生成器(真正不可预测的随机性)无法播种并产生真正不可预测的随机数。计算机通常无法做到这一点,因为随机性恰恰是它们不会做的事情。计算机是确定性的,不能产生真正的随机性。你需要做一些事情,比如测量放射性衰变来产生真正的随机性。

随机数生成器表面上看起来是随机运行的,但事实并非如此。他们从一个数字开始,然后对该数字应用确定性数学运算来改变它并产生一个不同的数字。每次调用生成器时,它都会根据其上一个数字生成一个新数字。因此,PRNG 的序列总是相同的。好的 PRNG 以序列看起来非常随机分布的方式应用操作。通常,它们会像一天中的时间一样被播种,所以如果您没有明确地播种它们,它们看起来是随机的。不过,如果您用特定值作为种子,它们将生成固定的预定数字序列。

关于PHP - 伪随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22892526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com