如何通过提供种子来随机化 PHP 中的数组并获得相同的顺序?
我正在尝试根据固定字符串创建一个“随机”字符串。如果可能的话,我希望能够创建相同的随机字符串(我知道它是矛盾的),前提是我使用相同的种子。像这样:
$base = '0123456789abcdef'; $seed = 'qwe123'; function get_seeded_random_string($base, $seed){ ??? }
预期的行为是,只要我给出相同的 $base
和 $seed
我总是得到相同的随机字符串。
I am trying to create a "random" string based on a fixed string. I'd like to be able, if at all possible, create the same random string (i know its an oxymoron) provided I use the same seed. like so:
$base = '0123456789abcdef'; $seed = 'qwe123'; function get_seeded_random_string($base, $seed){ ??? }
The expected behavior would be that as long as I give the same $base
and $seed
I always get the same random string.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
抱歉,但是根据文档,随机播放函数会自动播种。
通常,您不应该尝试提出自己的算法来随机化事物,因为它们很可能存在偏见。 Fisher-Yates 算法众所周知既高效又公正:
php7 中字符串的相同函数
Sorry, but accordingly to the documentation the shuffle function is seeded automatically.
Normally, you shouldn't try to come up with your own algorithms to randomize things since they are very likely to be biased. The Fisher-Yates algorithm is known to be both efficient and unbiased though:
Same function for a string in php7
是的,使用
mt_srand
您可以为“更好”的随机数生成器指定种子mt_rand
。Yes, with
mt_srand
you can specify the seed for the "better" random number generatormt_rand
.