나는 일관된 결과를 가진 배열을 무작위로 추출해야하는 PHP 스크립트를 가지고 있기 때문에 처음 몇 가지 항목을 사용자에게 제공 할 수 있으며 원하는 경우 동일한 순서대로 설정 한 결과에서 더 많은 결과를 가져올 수 있습니다.suhosin.mt_srand.ignore가 PHP에서 배열을 일관되게 뒤섞는 문제를 해결할 수 있습니까?
는 내가 현재 사용하고있어이 (내가 믿는 피셔 예이츠 알고리즘을 기반으로)입니다 : 내 로컬 설치에 잘 작동
function shuffle(&$array, $seed)
{
mt_srand($seed);
for ($a=count($array)-1; $a>0; $a--) {
$b = mt_rand(0, $a);
$temp = $array[$a];
$array[$a] = $array[$b];
$array[$b] = $temp;
}
}
하지만 수호신가 설치되어 실행하는 데 필요한 서버, seed가 무시된다는 것을 의미하는 mt_srand를 오버라이드하는 배열은 무작위로 섞이고 사용자는 중복 된 결과를 얻는다. 나는 Google에서 발견 한
모든 것은 내가 (후자는하지만 관련이 있는지 확실하지 않습니다 및 suhosin.srand.ignore) 그래서 넣어 suhosin.mt_srand.ignore을 해제 할 필요가 제안 htaccess로에서 다음
php_flag suhosin.mt_srand.ignore Off
php_flag suhosin.srand.ignore Off
나는이 서버에서 php.ini에 액세스 할 수 없으므로 AFAIK 만 수행 할 수 있습니다. 문제는 그 효과가 없다는 것입니다. phpinfo()는 두 설정을 모두 On으로 표시하지만 .htaccess를 사용하여 다른 Suhosin 설정을 변경할 수 있습니다.
그래서 내가 찾고있는 것은 실제로 suhosin.mt_srand.ignore (또는 작동하지 않는 이유)를 사용하지 못하게하는 방법이거나 PHP 내에서 임의의 숫자 생성기를 시드하는 해결 방법입니다. 아니면 직접 다른 RNG를 구현해야합니까?
도움을 주시면 감사하겠습니다. 감사! 난 그냥 :)했던 것처럼 당신이 아주 쉽게 자신의 임의 함수를 만들 수있는 몇 가지 기본적인 수학 및 몇 가지 트릭을 사용
캐시 어딘가에 결과 배열, ... – KingCrunch
이 보인다 . 본질적으로 그것은 수시로 개편 될 필요가 있습니다. 검색을 기반으로하므로 사용자가 수색을 재개 할 때마다 매 셔플이 최대 2 ~ 3 번만 사용됩니다. 그것은 사이트에서 많이 사용되는 부분이므로 다른 사용자를 위해 서로 다른 결과 배열을 서로 다른 버전으로 캐싱 할 것입니다. 많은 경우 동일한 결과가 다르게 섞여서 처리해야합니다. 스토리지 및 각 어레이와 모든 것을 보유 할 기간. – alexz
모든 사용자가 _completely_ 다른 버전을보아야한다는 요구 사항입니까, 아니면 여러 사용자에게 하나의 셔플 세트 만 사용할 수 있습니까? – KingCrunch