Array rand php примеры

PHP: array_rand() function

PHP: Pick one or more random entries out of an array

The array_rand() function is used to fetch one or more random entries from an array. It uses a pseudo-random number generator that is not suitable for cryptographic purposes.

array_rand(array1, no_rand_keys)
Name Description Required /
Optional
Type
array1 The input array. Required Array
no_rand_keys No of entries to get. Optional Integer

Return value:

A random key if the value of no_rand_keys = 1.
If the value of no_rand_keys is greater than 1 it returns an array.

Value Type: Mixed*.
*Mixed : Mixed indicates multiple (but not necessarily all) types.

Note : Since array_rand() function selects random values every time you run it, your output may vary from the Pictorial as well the output is shown under Output of the example in this tutorial.

Practice here online :

Previous: array_push
Next: array_reduce

Follow us on Facebook and Twitter for latest update.

PHP: Tips of the Day

How do I use PHP to get the current year?

You can use either date or strftime.

On a side note, when formatting dates in PHP it matters when you want to format your date in a different locale than your default. If so, you have to use setlocale and strftime. According to the php manual on date:

To format dates in other languages, you should use the setlocale() and strftime() functions instead of date().

  • Weekly Trends
  • Java Basic Programming Exercises
  • SQL Subqueries
  • Adventureworks Database Exercises
  • C# Sharp Basic Exercises
  • SQL COUNT() with distinct
  • JavaScript String Exercises
  • JavaScript HTML Form Validation
  • Java Collection Exercises
  • SQL COUNT() function
  • SQL Inner Join
  • JavaScript functions Exercises
  • Python Tutorial
  • Python Array Exercises
  • SQL Cross Join
  • C# Sharp Array Exercises

We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook

Источник

Получить случайные элементы из массива в PHP

В этом посте мы обсудим, как генерировать случайные записи из массива в PHP.

1. Использование array_rand() функция

Простым и эффективным решением является использование array_rand() функция для выбора одной или нескольких случайных записей из массива. Вот программа PHP для выбора случайного ключа из массива $arr :

The array_rand() Функция возвращает ключ случайной записи. Чтобы выбрать случайное значение (не ключ) случайной записи, используйте приведенный ниже фрагмент кода:

Читайте также:  Read large files in java

Вот пример использования замыкания.

Второй аргумент array_rand() Функция указывает, сколько случайных записей должно быть выбрано. Вот программа PHP для выбора $n случайные значения из массива $arr :

Видеть Руководство по PHP Больше подробностей.

2. Использование mt_rand() функция

До PHP 7.1.0 внутренний алгоритм рандомизации для array_rand() использует функцию libc rand, которая работает медленнее и менее случайна, чем генератор чисел Mersenne Twister. Если ваши ключи массива являются числовыми, вот лучшая альтернатива для выбора случайного значения из массива $arr :

The mt_rand() функция является лучшей альтернативой для старых rand() . Однако оба array_rand() а также mt_rand() не генерирует криптографически безопасные значения. В криптографических целях рассмотрите возможность использования random_int() , random_bytes() , или же openssl_random_pseudo_bytes() вместо.

Ссылаться на Руководство по PHP Больше подробностей.

Это все о генерации случайных записей из массива в PHP.

Средний рейтинг 4.92 /5. Подсчет голосов: 12

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Источник

PHP Функция array_rand()

Функция array_rand() возвращает случайный ключ из массива, или он возвращает массив случайных ключей, если вы указываете, что функция должна возвращать более одного ключа.

Синтаксис

Параметр значений

Параметр Описание
array Требуемый. Задает массив
number Необязательный. Указывает, сколько случайных ключей нужно вернуть

Технические подробности

Возврат значения: Возвращает случайный ключ из массива или массив случайных ключей, если указано, что функция должна возвращать более одного ключа
PHP Версия: 4+
PHP Список изменений: PHP 7.1: rand() использует генератор случайных чисел Mersenne Twister
PHP 5.2.1: результирующий массив ключей больше не перемешивается
PHP 4.2: генератор случайных чисел высевается автоматически

Еще примеры

Пример

Возвращает случайный ключ из массива:

Пример

Возвращает массив случайных строковых ключей:

Мы только что запустили
SchoolsW3 видео

ВЫБОР ЦВЕТА

colorpicker

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

Ваше предложение:

Спасибо Вам за то, что помогаете!

Ваше сообщение было отправлено в SchoolsW3.

ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат

SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Источник

array_rand

Выбирает одно или несколько случайных значений из массива. Возвращает ключ (или ключи) данных случайных элементов.

Функция не создаёт криптографически защищённые значения и не должна использоваться для криптографических целей или целей, требующих, чтобы возвращаемые значения были недоступны для разгадывания.

Читайте также:  Echo symbol in php

Если требуется криптографически безопасная случайная последовательность, Random\Randomizer может использоваться с движком Random\Engine\Secure . Для простых случаев использования функции random_int() и random_bytes() предоставляют удобный и безопасный API, поддерживаемый CSPRNG операционной системы.

Список параметров

Определяет количество выбираемых элементов.

Возвращаемые значения

Если вы выбираете только одно значение, функция array_rand() возвращает ключ, соответствующий этому значению. В обратном случае, она возвращает массив ключей, соответствующих случайным значениям. Это сделано для того, чтобы дать возможность выбрать из массива как случайные значения, так и случайные ключи. Если возвращается несколько ключей, они будут возвращены в том порядке, в котором они присутствовали в исходном массиве. Попытка выбрать больше элементов, чем есть в массиве, сгенерирует ошибку уровня E_WARNING и вернёт NULL.

Список изменений

Версия Описание
7.1.0 Внутренний алгоритм получения случайных чисел изменён с функции rand библиотеки libc на генератор на базе » Вихря Мерсенна.

Примеры

Пример #1 Пример использования array_rand()

$input = array( «Neo» , «Morpheus» , «Trinity» , «Cypher» , «Tank» );
$rand_keys = array_rand ( $input , 2 );
echo $input [ $rand_keys [ 0 ]] . «\n» ;
echo $input [ $rand_keys [ 1 ]] . «\n» ;
?>

Смотрите также

User Contributed Notes 7 notes

If the array elements are unique, and are all integers or strings, here is a simple way to pick $n random *values* (not keys) from an array $array:

It doesn’t explicitly say it in the documentation, but PHP won’t pick the same key twice in one call.

array_rand () takes a random value without ever being able to go back in its choice of random value.
A simple example:
I decide to mix an array of 10 entries to retrieve 3 values. This choice will give increasing and random values.

$pm = array_rand($myarray,3);
// $pm return array(0->0,1->6,2->8)

But if I decide to shuffle an array of 10 entries to get 10 entries, array_rand () will choose to assign a value to each return value and therefore the return array will not be random.

$gm = array_rand($myarray,count($myarray));
// $gm not random array(0->0,1->1,2->2,3->3,4->4,5->5,6->6,7->7,8->8,9->9)

The easiest way to have a truly random value:
either use array_rand () in a loop of 1 value at a time

——————
or simply use shuffle () to shuffle the array really randomly.

/**
* Wraps array_rand call with additional checks
*
* TLDR; not so radom as you’d wish.
*
* NOTICE: the closer you get to the input arrays length, for the n parameter, the output gets less random.
* e.g.: array_random($a, count($a)) == $a will yield true
* This, most certainly, has to do with the method used for making the array random (see other comments).
*
* @throws OutOfBoundsException – if n less than one or exceeds size of input array
*
* @param array $array – array to randomize
* @param int $n – how many elements to return
* @return array
*/
function array_random (array $array , int $n = 1 ): array
if ( $n < 1 || $n >count ( $array )) throw new OutOfBoundsException ();
>

Читайте также:  Си шарп вычисление суммы чисел

return ( $n !== 1 )
? array_values ( array_intersect_key ( $array , array_flip ( array_rand ( $array , $n ))))
: array( $array [ array_rand ( $array )]);
>

// An example how to fetch multiple values from array_rand
$a = [ ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ , ‘g’ ];
$n = 3 ;

// If you want to fetch multiple values you can try this:
print_r ( array_intersect_key ( $a , array_flip ( array_rand ( $a , $n ) ) ) );

// If you want to re-index keys wrap the call in ‘array_values’:
print_r ( array_values ( array_intersect_key ( $a , array_flip ( array_rand ( $a , $n ) ) ) ) );

for a cryptographically secure version, try

/**
* fetch a random key from array, using a cryptograpically secure rng
* discussed+reviewed at https://codereview.stackexchange.com/questions/275832/cryptographically-secure-version-of-the-core-array-rand-function/
*
* @param array $array
* @throws ValueError if array is empty
* @return int|string key
*/
function array_rand_cryptographically_secure (array $array ) /*: int|string*/ $max = count ( $array ) — 1 ;
if ( $max < 0 ) throw new ValueError ( 'Argument #1 ($array) cannot be empty' );
>
return key ( array_slice ( $array , random_int ( 0 , $max ), 1 , true ) );
>

$tests = [
[ 5 , 6 , 7 ],
[ ‘a’ => 1 , ‘b’ => 2 , ‘c’ => 3 ],
[ ‘zero’ , 4 => ‘four’ , 9 => ‘nine’ ],
[ «PEAN» => 0 ],
[]];
foreach ( $tests as $test ) echo array_rand_cryptographically_secure ( $test ) . «\n» ;
>

?>
(this is an improved version, which unlike the first version, avoids copying *all* the keys)

Generate random index in weights array.
Implementation of Vose’s Alias Method.

class AliasMethod
protected $count ;
protected $prob ;
protected $alias ;

public function __construct ( $weight )
$count = count ( $weight );
$sum = array_sum ( $weight );
$d = $count / $sum ;
$small = [];
$large = [];

while (!empty( $small ) AND !empty( $large )) $l = array_pop ( $small );
$g = array_pop ( $large );
$prob [ $l ] = $weight [ $l ];
$alias [ $l ] = $g ;

if ( ( $weight [ $g ] += $weight [ $l ] — 1 ) < 1 )
$small [] = $g ;
else
$large [] = $g ;
>

foreach ( $large as $i )
$prob [ $i ] = 1 ;

foreach ( $small as $i )
$prob [ $i ] = 1 ;

$this -> prob = $prob ;
$this -> alias = $alias ;
$this -> count = $count ;

public function next (): int
$i = mt_rand ( 0 , $this -> count — 1 );
if ( mt_rand () / mt_getrandmax () prob [ $i ])
return $i ;
else
return $this -> alias [ $i ];
>
>

$weight = [ 1 , 2 , 1 , 1 , 100 , 1 , 1 , 5 , 1 , 1 ];
$rnd = new AliasMethod ( $weight );

$results = array_fill ( 0 , count ( $weight ), 0 );

for( $i = 0 ; $i < 100000 ; ++ $i ) $results [ $rnd -> next ()]++;
>
print_r ( $results );

  • Функции для работы с массивами
    • array_​change_​key_​case
    • array_​chunk
    • array_​column
    • array_​combine
    • array_​count_​values
    • array_​diff_​assoc
    • array_​diff_​key
    • array_​diff_​uassoc
    • array_​diff_​ukey
    • array_​diff
    • array_​fill_​keys
    • array_​fill
    • array_​filter
    • array_​flip
    • array_​intersect_​assoc
    • array_​intersect_​key
    • array_​intersect_​uassoc
    • array_​intersect_​ukey
    • array_​intersect
    • array_​is_​list
    • array_​key_​exists
    • array_​key_​first
    • array_​key_​last
    • array_​keys
    • array_​map
    • array_​merge_​recursive
    • array_​merge
    • array_​multisort
    • array_​pad
    • array_​pop
    • array_​product
    • array_​push
    • array_​rand
    • array_​reduce
    • array_​replace_​recursive
    • array_​replace
    • array_​reverse
    • array_​search
    • array_​shift
    • array_​slice
    • array_​splice
    • array_​sum
    • array_​udiff_​assoc
    • array_​udiff_​uassoc
    • array_​udiff
    • array_​uintersect_​assoc
    • array_​uintersect_​uassoc
    • array_​uintersect
    • array_​unique
    • array_​unshift
    • array_​values
    • array_​walk_​recursive
    • array_​walk
    • array
    • arsort
    • asort
    • compact
    • count
    • current
    • end
    • extract
    • in_​array
    • key_​exists
    • key
    • krsort
    • ksort
    • list
    • natcasesort
    • natsort
    • next
    • pos
    • prev
    • range
    • reset
    • rsort
    • shuffle
    • sizeof
    • sort
    • uasort
    • uksort
    • usort
    • each

    Источник

Оцените статью