Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP shuffle vs rand-产生更好的随机性_Php - Fatal编程技术网

PHP shuffle vs rand-产生更好的随机性

PHP shuffle vs rand-产生更好的随机性,php,Php,是否有人知道生成随机数的两种选择中的哪一种会产生更好的随机性: <?php $array = array(1,2,3,4,5,6); shuffle($array); echo $array[0]; //// OR //// echo rand(1,6); ?> 或者也许有一个我不知道的更好的选择?两者都使用相同的方法,因此它们的随机性同样好/坏。显然,普通的rand(1,6)更快,因为它只是数学问题,而不是数学和数组问题。除此之外,如果需要数组中的随机元素,可以使用

是否有人知道生成随机数的两种选择中的哪一种会产生更好的随机性:

<?php
$array = array(1,2,3,4,5,6);

shuffle($array);
echo $array[0];

//// OR ////

echo rand(1,6);

?>

或者也许有一个我不知道的更好的选择?

两者都使用相同的方法,因此它们的随机性同样好/坏。显然,普通的
rand(1,6)
更快,因为它只是数学问题,而不是数学和数组问题。除此之外,如果需要数组中的随机元素,可以使用

PHP也有()这是“更好的”,但不适合加密(可能与您的情况无关)

如果你需要真正的随机性,你可以考虑从<代码> /DEV/随机中读取,但是如果没有随机性,则读取可能会阻塞。您还可以使用硬件设备,根据某些物理效果提供更好的随机性。

两者都使用相同的设备,因此它们的随机性同样好/坏。显然,普通的
rand(1,6)
更快,因为它只是数学问题,而不是数学和数组问题。除此之外,如果需要数组中的随机元素,可以使用

PHP也有()这是“更好的”,但不适合加密(可能与您的情况无关)


如果你需要真正的随机性,你可以考虑从<代码> /DEV/随机中读取,但是如果没有随机性,则读取可能会阻塞。您还可以使用硬件设备,根据某些物理效果提供更好的随机性。

在大多数系统上,使用随机值为随机数生成器设定种子。在大多数应用程序中,使用当前时间的低阶部分(如秒和微秒)是一个非常好的策略。这是否适用于您取决于应用程序


在Linux系统上,程序还可以从
/dev/random
/dev/uradom
读取一些字节,以为随机数生成器种子。它是来自设备驱动程序和其他难以预测的现象的随机熵的集中。

在大多数系统上,使用随机值为随机数生成器种子。在大多数应用程序中,使用当前时间的低阶部分(如秒和微秒)是一个非常好的策略。这是否适用于您取决于应用程序


在Linux系统上,程序还可以从
/dev/random
/dev/uradom
读取一些字节,以为随机数生成器种子。这是来自设备驱动程序和其他难以预测的现象的随机熵的集中。

shuffle()使用与rand()相同的生成器-我刚刚用我的六面骰子掷了一个4。请随意使用它——我所要求的只是信用。“更好”在什么意义上?很难弄清楚你在这里要找什么。做索尼做的:
DEFINE('rand()',3)
shuffle()使用与rand()相同的生成器-我刚刚用六面骰子掷了一个4。请随意使用它——我所要求的只是信用。“更好”在什么意义上?很难弄清楚你在这里要找什么。做索尼做的:
DEFINE('rand()',3)同意,“随机性”将是相同的。如果只处理整数,我会考虑处理时间
rand()
肯定会运行得更快。我同意,“随机性”也是一样的。如果只处理整数,我会考虑处理时间
rand()
肯定会运行得更快。在相当长的一段时间内,在大多数平台上都不需要对RNG进行种子设定,而在PHP中,从4.2开始就不需要了。@Sammitch:为什么?是因为RNG自身随着时间而播种吗?播种RNG在大多数平台上已经不必要了,而且在PHP中,从4.2开始就不需要了。@Sammitch:为什么?是因为RNG自身随着时间而播种吗?