Справочники, инструменты, документация

PHP: Случайные значения (cниппеты)

Коллекция готовых полезных функций и коротких сниппетов для работы со случайными значениями.

Инициализация генератора случайных чисел

srand(1288);
for($i=0; $i<5;$i++){
  echo rand();
  echo "<br>";
}
echo rand();
echo rand(1,100); // Выдаем случайное число от 1 до 100

mt_rand()

Случайная строка из файла

$ourFile = fopen('blocks/text1.php', 'r');
for($i = 0; $s = fgets($ourFile, 10000); $i++) 
{
 if(mt_rand(0, $i) == 0) $line = $s;
}
echo $line;

Случайное число

function PassSalt($n=3)
{
 $key = '';
 $pattern = '1234567890abcdefghijklmnopqrstuvwxyz,*_-=+';
 $counter = strlen($pattern)-1;
 for($i=0; $i<$n; $i++)
 {
  $key .= $pattern{rand(0,$counter)};
 }
 return $key;
}
$HeshPass = PassSalt();

Случайный пароль

//Символы, которые будут использоваться в пароле
$chars = "qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; 
// Количество символов в пароле
$max = 17; 
// Определяем количество символов в $chars 
$size = strlen($chars)-1; 
// Определяем пустую переменную, в которую и будем записывать символы
$active = null; 
// Создаём пароль
while($max--) 
$active .= $chars[rand(0, $size)]; 
// Выводим созданный пароль
echo $active;

Счётчик для случайной рекламы

session_start();
if($_SESSION['n'] <= 3)
{
 $_SESSION['n']++;
 $n = $_SESSION['n'];
}

if ($n == 1) {echo 'реклама 1';}
if ($n == 2) {echo 'реклама 2';}
if ($n == 3) {echo 'реклама 3';}
if ($n == 4) {echo 'реклама 4';}

Генерировать случайные числа, например, целые в заданных пределах, от 1 до 100 включительно

 echo rand(1,100);

Генерировать вещественные случайные числа

 echo mt_rand() / mt_getrandmax();

Получим вещественные равномерно распределённые числа от 0 до 1

Ну а масштабировать в любой другой диапазон легко, например, в [-5;5]:

 $a0 = mt_rand() / mt_getrandmax();
 $min = -5;
 $max = 5;
 $a = $min + $a0*($max-$min);
 echo $a;

Случайная строка из файла

include "text.dat";
mt_srand ((float) microtime() * 1000000);
$fp = file($config["datafile"]);
$count = count($fp) - 1;
$text = $fp[mt_rand(0,$count)];

if (empty($type)) 
  {
    echo $text;
  }