【问题标题】:How to improve array_rand() function with PHP?如何使用 PHP 改进 array_rand() 函数?
【发布时间】:2018-03-26 03:18:48
【问题描述】:

我使用带有数组的array_rand PHP 函数。我将它与数据夹具函数一起使用,该函数在这样的循环中加载一组数据:

$random_values = array();
for ($i = 0; $i < 20; $i++) {
    $random_values[] = array_rand(["1","2","3","4","5"]);
}

我的结果在 $random_values 数组中总是“1”,即本机 PHP函数似乎不是真的随机,还有其他事情要做吗 改进我的算法的随机化?

注意我已经知道这里有一个官方文档,http://php.net/manual/fr/function.array-rand.php

【问题讨论】:

  • 看看播种 rng 是否有助于您的测试:srand ((float) microtime() * 10000000); ... 是一个基本示例(在执行数组之前放置)。
  • 您运行的是什么版本的 PHP?如果您使用的 PHP 版本足够老,需要 srand(),那么您有很多、很多更大的问题。
  • 还有一个事实是,“随机”并不意味着“公平”或“均匀”,特别是对于少量事件,例如:20。一个 完美 RNG 可以从现在到太阳熄灭,只吐出数字 42,因为这与任何其他输出集一样可能。

标签: php random


【解决方案1】:

最近怎么样?因此,使用 array_rand,它实际上返回一个数组中的随机键。您当前的代码没有将随机键值放入要随机化的数组中。即 echo $random_value[$random_key]... 参见下面的示例,希望对您有所帮助

$random_values = array("1","2","3","4","5");
	
	for ($i = 0; $i < 20; $i++) {
		$key = array_rand($random_values); 
		echo $random_values[$key] . "\n";
	}	

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2014-11-06
    相关资源
    最近更新 更多