php rand array value
get random value from a PHP array, but make it unique
I want to select a random value from a array, but keep it unique as long as possible.
For example if I’m selecting a value 4 times from a array of 4 elements, the selected value should be random, but different every time.
If I’m selecting it 10 times from the same array of 4 elements, then obviously some values will be duplicated.
I have this right now, but I still get duplicate values, even if the loop is running 4 times:
9 Answers 9
To keep it the same as what you have up there:
Or an example with a few less lines:
How about shuffling the array, and popping items off.
Of course, you’ll want to encapsulate this better, and do better checking, and other such things.
Php has a native function called shuffle which you could use to randomly order the elements in the array. So what about this?
I’ve done this to create a random 8 digit password for users:
If you do not care about what particular values are in the array, you could try to implement a Linear Congruential Generator to generate all the values in the array.
Wikipedia lists some values you can use, and the rules to select the values for the LCG algorithm, because the LCG algorith is deterministic it is guaranteed not to repeat a single value before the length of the period.
After filling the array with this unique numbers, you can simply get the numbers in the array 1 by 1 in order.
array_rand
(PHP 4, PHP 5, PHP 7, PHP 8)
array_rand — Выбирает один или несколько случайных ключей из массива
Описание
Выбирает одно или несколько случайных значений из массива. Возвращает ключ (или ключи) данных случайных элементов. Данная функция использует псевдослучайный генератор и не предназначена для использования в криптографических целях.
Список параметров
Определяет количество выбираемых элементов.
Возвращаемые значения
Если вы выбираете только одно значение, функция array_rand() возвращает ключ, соответствующий этому значению. В обратном случае, она возвращает массив ключей, соответствующих случайным значениям. Это сделано для того, чтобы дать возможность выбрать из массива как случайные значения, так и случайные ключи. Если возвращается несколько ключей, они будут возвращены в том порядке, в котором они присутствовали в исходном массиве. Попытка выбрать больше элементов, чем есть в массиве, сгенерирует ошибку уровня E_WARNING и вернёт NULL.
Список изменений
Версия | Описание |
---|---|
7.1.0 | Внутренний алгоритм получения случайных чисел изменён с функции rand библиотеки libc на генератор на базе » Вихря Мерсенна. |
Примеры
Пример #1 Пример использования array_rand()
Смотрите также
User Contributed Notes 4 notes
Php rand array value
(PHP 4, PHP 5, PHP 7, PHP 8)
rand — Генерирует случайное число
Описание
Список параметров
Наименьшее значение, которое может быть возвращено (по умолчанию: 0)
Наибольшее значение, которое может быть возвращено (по умолчанию: getrandmax() )
Возвращаемые значения
Псевдослучайное значение в диапазоне от min (или 0) до max (или getrandmax() ).
Список изменений
Примеры
Пример #1 Пример использования rand()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Смотрите также
User Contributed Notes 39 notes
quick way to generate randomish numbers and simple strings.
no messing around with functions, so you can just pop the line into the middle of your existing code.
not the most perfect for sure, but ok for plenty of situations.
?>
hope someone finds it useful for somthing.
I also enjoy making one-liners.
Examples:
rand_chars(«ABCEDFG», 10) == GABGFFGCDA
rand_chars(«ABCEDFG», 10, TRUE) == CBGFAEDFEC
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,
Since many people (myself included) come to this page looking for a way to do a random string, I present a way that uses arrays and shuffle() instead of rand(). This also has the effect of not repeating any characters in the value set.
If you are looking for generate a random expression, like password with alphanumeric or any other character, use this function:
//Here you specify how many characters the returning string must have
echo GeraHash ( 30 );
?>
Random integers with normal distribution,
it’s not scientifically approved, but worked for me.
isn’t this just a simpler way of making a random id for somthing? I mean i know that there is a very slight chance that a duplicate could be made but its a very, very, very small chance, nearly impossible.
and if you don’t want it the md5 can be removed, I’ve just added it as a prefer it there 🙂
I have made this example to generate random number with specific length (10).
array_rand
array_rand — Выбирает одно или несколько случайных значений из массива
Описание
Выбирает одно или несколько случайных значений из массива. Возвращает ключ (или ключи) данных случайных элементов. Данная функция использует псевдослучайный генератор и не предназначена для использования в криптографии.
Список параметров
Определяет количество выбираемых элементов.
Возвращаемые значения
Если вы выбираете только одно значение, функция array_rand() возвращает ключ, соответствующий этому значению. В обратном случае, она возвращает массив ключей, соответствующих случайным значениям. Это сделано для того, чтобы дать возможность выбрать из массива как случайные значения, так и случайные ключи. Попытка выбрать больше элементов, чем есть в массиве, сгенерирует ошибку уровня E_WARNING и вернет NULL.
Список изменений
Версия | Описание |
---|---|
7.1.0 | Внутренний алгоритм получения случайных чисел изменен с функции rand библиотеки libc на генератор на базе » Вихря Мерсена. |
5.2.10 | Возвращаемый массив ключей больше не возвращается в случайном порядке. |
4.2.0 | Генератор случайных чисел инициализируется автоматически. |
Примеры
Пример #1 Пример использования array_rand()
Смотрите также
User Contributed Notes 36 notes
Note: array_rand uses the libc generator, which is slower and less-random than Mersenne Twister.
Looks like this function has a strange randomness.
If you take any number of elements in an array which has 40..100 elements, the 31st one is always by far the less occuring (by about 10% less than others).
I tried this piece of code at home (PHP Version 5.3.2-1ubuntu4.9) and on my server (PHP Version 5.2.17), unfortunately i haven’t any server with the last version here :
For this particular case, i recommend shuffling the array and taking the nth first elements, in this test it’s 60% faster and the statistics are ok.
An example for getting random value from arrays;
And example for getting random value from assoc arrays;
Как получить случайное значение из массива в PHP?
Есть две функции для получения случайного значения из массива в PHP. Функция shuffle () и array_rand () используется для получения случайного значения из массива.
Примеры:
Метод 1: Этот метод обсуждает функцию shuffle () для получения случайного значения из массива в PHP.
PHP | Функция shuffle () : Функция shuffle () — это встроенная функция в PHP, которая используется для перемешивания или рандомизации порядка элементов в массиве. Эта функция назначает новые ключи для элементов в массиве. Он также удалит все существующие ключи, а не просто переупорядочивает ключи и назначает цифровые клавиши, начиная с нуля.
Синтаксис:
Пример:
// Объявляем ассоциативный массив
// Используем функцию shiffle для случайного назначения числового значения
// ключ ко всем элементам массива.
// Показать первый элемент массива в случайном порядке
В приведенном выше примере ключи ассоциативного массива были изменены. Функция shuffle () имеет произвольно назначенные клавиши для элементов, начиная с нуля. Так как shuffle () постоянно меняет ключи массива.
Метод 2: Используйте функцию array_rand (), чтобы получить случайное значение из массива в PHP.
PHP | Функция array_rand () : Функция array_rand () — это встроенная функция в PHP, которая используется для получения случайного числа элементов из массива. Элемент является ключом и может возвращать один или несколько ключей.
Синтаксис:
Пример 1:
// Объявляем ассоциативный массив
// Используем функцию array_rand для возврата случайного ключа
// Показать элемент случайного массива
В приведенном выше примере мы не указали явно значение для второго параметра, поэтому по умолчанию это значение равно 1, а array_rand () возвращает один случайный ключ.
Пример 2: В этом примере явно указывается значение второго параметра, поэтому функция array_rand () возвращает массив случайных ключей.
// Объявляем ассоциативный массив
// Он указывает номер элемента
// Возвращает массив случайных ключей
// Показать элемент массива