PHP Velho Oeste 2024

rand

(PHP 4, PHP 5, PHP 7)

rand정수 난수를 생성

설명

int rand ( void )
int rand ( int $min , int $max )

선택적인 min, max 인수 없이 호출하면, rand()는 0과 getrandmax() 사이의 임의의 난수를 반환합니다. 예를 들어, 5와 15(포함) 사이의 난수를 얻으려면, rand(5, 15)로 사용합니다.

Note: 몇몇 플랫폼(윈도우 등)에서는, getrandmax()가 32768입니다. 32768보다 넓은 범위가 필요하면, minmax를 지정해서 더 넓은 범위를 만들 수 있으며, 혹은 mt_rand()를 사용하는 것을 고려해보십시오.

Note: PHP 4.2.0부터 srand()mt_srand()를 이용한 난수값 생성기 초기화를 할 필요가 없습니다. 자동적으로 이루어집니다.

인수

min

반환할 가장 작은 값 (기본값: 0)

max

반환할 가장 큰 값 (기본값: getrandmax())

반환값

min(혹은 0)과 max(혹은 getrandmax()) 사이의 모의 난수 값.

변경점

버전 설명
3.0.7부터 3.0.7 이전에 max의 의미는 range였습니다. 이 버전에서 위에서 보인 간단한 예제와 같이 5에서 15사이의 난수를 얻으려면 rand (5,11)로 사용해야 합니다.

예제

Example #1 rand() 예제

<?php
echo rand() . "\n";
echo 
rand() . "\n";
echo 
rand(515);
?>

위 예제의 출력 예시:

7771
22264
11

참고

add a note add a note

User Contributed Notes 4 notes

up
3
relsqui at armory dot com
19 years ago
Don't forget, it's faster to use bitwise operations when you need a random number that's less than some power of two. For example,

<?php
rand
()&1;
// instead of
rand(0,1);
// for generating 0 or 1,

rand()&3;
// instead of
rand(0,3);
// for generating 0, 1, 2, or 3,

rand()&7;
// instead of
rand(0,7)
// for generating 0, 1, 2, 3, 4, 5, 6, or 7,
?>

and so on. All you're doing there is generating a default random number (so PHP doesn't have to parse any arguments) and chopping off the piece that's useful to you (using a bitwise operation which is faster than even basic math).
up
0
play dot it at play-it dot net
1 year ago
Here is a simple base64 random string function

<?php
function random_string($length) {
   
$str = random_bytes($length);
   
$str = base64_encode($str);
   
$str = str_replace(["+", "/", "="], "", $str);
   
$str = substr($str, 0, $length);
    return
$str;
}

/*
Example outputs for random_string(32)

OP0vOJEsSvr6wbgN4jIwqMMstlpMSUsl
2IHaIxD2W4VTKZuzioudbpQCALdl6Ym6
QY0eZ3QYy3OKKN6ttzbDwAwsAfkXfQ2f
jznjlPCUDbYzOTJysPP414BbdVNu4jmT
GlktgJ8JUhdH5MfQ1PHl0wnqXQlKggQs
Pb9WALM3KcGCCPBKXsPgNfy3M0Xj4aEu
AED6OTVl8aBbspdxoXvA1sT4ein8lruH
9cSbz4FhoI4qSsPZFMh0u1rWDDEgQxI2
iSBlT4K7Ad516qPXgPReSj2tii7TAK5b
DuX8HByMb2e8IdM4j49Td2JTI9Ki7o1C
*/
?>
up
-5
Anonymous
3 years ago
Note that the algorithm change in version 7.1.0 broke the repeatability of a random sequence initialized with a given value. For example if you have a program like:

<?php
srand
($argv[1]);
for (
$i = 0; $i < 10; $i++) {
    echo
rand().PHP_EOL;
}
?>

It will will no longer produce the same results after version 7.1.0. This can be very important for some kinds of simulations. Hopefully you were using mt_rand() or something better all along, otherwise you will have some digging to do if you want your program to be able to repeat simulations from the pre-7.1.0 days... You will need to look in the PHP source archives to discover the algorithm they used to use and replicate it in your program.
up
-11
Anonymous
14 years ago
Generate a random 5 character A-Z0-9  string

<?php
for ($i=0; $i<6; $i++) {
   
$d=rand(1,30)%2;
    echo
$d ? chr(rand(65,90)) : chr(rand(48,57));
}
?>

# php -r 'for ($i=0; $i<6; $i++) { $d=rand(1,30)%2; echo $d ? chr(rand(65,90)) : chr(rand(48,57)); } echo "\n";'
14BW1A
To Top