[php] PHP를 사용하는 [최소-최대] 범위의 난수

최소값과 최대 값을 기준으로 난수를 생성하는 방법이 있습니까?

예를 들어, min이 1이고 max 20이라면 1과 20을 포함하여 1과 20 사이의 숫자를 생성해야합니까?



답변

<?php
  $min=1;
  $max=20;
  echo rand($min,$max);
?>


답변

새로운 PHP7 에서는 마지막으로 암호 학적으로 안전한 의사 난수 정수를 지원합니다.

int random_int ( int $min , int $max )

random_int — 암호 학적으로 안전한 의사 난수 정수를 생성합니다.

기본적으로 이전 답변을 쓸모 없게 만듭니다.


답변

빠른 빠른 버전 사용에는, mt_rand 것입니다 :

$min=1;
$max=20;
echo mt_rand($min,$max);

출처 : http://www.php.net/manual/en/function.mt-rand.php .

참고 : 이 작업을 수행하려면 서버에 Math PHP 모듈이 활성화되어 있어야합니다. 그렇지 않은 경우 호스트를 버그로 사용하여 활성화하거나 일반 (그리고 더 느린) rand ()를 사용해야합니다.


답변

(rand() % ($max-$min)) + $min

또는

rand ( $min , $max )

http://php.net/manual/en/function.rand.php


답변

여기에 답변을 묶어 버전을 독립적으로 만들었습니다.

function generateRandom($min = 1, $max = 20) {
    if (function_exists('random_int')):
        return random_int($min, $max); // more secure
    elseif (function_exists('mt_rand')):
        return mt_rand($min, $max); // faster
    endif;
    return rand($min, $max); // old
}


답변

rand(1,20)

PHP의 rand 함수용 문서는 다음과 같습니다.

http://php.net/manual/en/function.rand.php

사용 srand()난수 생성기의 시드 값을 설정하는 기능.


답변

이걸로 해봐. 귀하의 희망에 따라 ID를 생성합니다.

function id()
{
 // add limit
$id_length = 20;

// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {

  // generate randomly within given character/digits
  @$token .= $alfa[rand(1, strlen($alfa))];

}
return $token;
}