@Prog-Time

Как создать рандомную выборку?

У меня есть несколько доменов
ремонтмитино.рф
ремонт-королев.рф
ремонтчехов.рф
ремонтподольск.рф
ремонтдомодедово.рф

На каждом домене есть страница "aeg" и прочие бренды
ремонтмитино.рф/aeg
ремонт-королев.рф/aeg
ремонтчехов.рф/aeg
ремонтподольск.рф/aeg
ремонтдомодедово.рф/aeg

У меня есть массив из которого я должен выбрать строки.
'holodilnikov' => array( 
        'Работа холодильника основана на принципе холодильной машины, переносящей тепловую энергию из рабочей камеры – наружу, в кухонное помещение', 
        'Холодильники делятся на два вида: среднетемпературные камеры для хранения свежих продуктов и низкотемпературные морозильные камеры', 
        'Прототип морозильника появились несколько тысяч лет назад – использовались помещения для хранения продуктов, наполненные льдом', 
        'Российский прототип холодильника — ледники, представляющие сруб, погруженный в землю', 
        'С 1930 года хладагентом в морозильниках является инертный газ фреон', 
        'Хладагент, обычно, фреон — газ, переносящий лишнее для продуктов тепло от испарителя к конденсатору', 
        'Холодильник тратит около 10% от общего электропотребления дома', 
        'Наиболее экономный режим холодильника - когда в нём находится большое количество продуктов', 
    ),

Масив будет состоять из 10-15 строк.

Вопрос: как мне создать последовательность 5 цифр (вывести 5 строк), чтобы на разных брендах (samsung, lg и тд.) и на разных доменах была уникальная комбинация.

Я думаю нужно сформировать уравнение исходя из URL страницы.
Требования:
- Строки могут совпадать, главное рандомизировать их порядок!
- Последовательность должна быть жёсткой и не меняться после перезагрузки страницы

Выборку я сделаю сам (массив писать не нужно), мне нужно только чтобы были 5 рандомных цифр.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 2
BoShurik
@BoShurik
Symfony developer
Вариант без хранения последовательностей:
$hosts = [
    'ремонтмитино.рф',
    'ремонт-королев.рф',
    'ремонтчехов.рф',
    'ремонтподольск.рф',
    'ремонтдомодедово.рф',
];

$brands = [
    'aeg',
    'samsung',
    'lg',
];

$phrases = [
    'Работа холодильника основана на принципе холодильной машины, переносящей тепловую энергию из рабочей камеры – наружу, в кухонное помещение',
    'Холодильники делятся на два вида: среднетемпературные камеры для хранения свежих продуктов и низкотемпературные морозильные камеры',
    'Прототип морозильника появились несколько тысяч лет назад – использовались помещения для хранения продуктов, наполненные льдом',
    'Российский прототип холодильника — ледники, представляющие сруб, погруженный в землю',
    'С 1930 года хладагентом в морозильниках является инертный газ фреон',
    'Хладагент, обычно, фреон — газ, переносящий лишнее для продуктов тепло от испарителя к конденсатору',
    'Холодильник тратит около 10% от общего электропотребления дома',
    'Наиболее экономный режим холодильника - когда в нём находится большое количество продуктов',
];

$count = 5;
foreach ($hosts as $host) {
    foreach ($brands as $brand) {
        srand(crc32($host.$brand)); // Чтобы не хранить результат

        $brandPhrases = $phrases;
        shuffle($brandPhrases);

        echo sprintf("%s %s\n", $host, $brand);
        $brandPhrases = array_slice($brandPhrases, 0, $count);
        var_dump($brandPhrases);
    }
}
Ответ написан
Комментировать
IceRD
@IceRD
range создавайте массив
shuffle перемешивайте как нужно.
записывайте результат, чтобы "не меняться после перезагрузки страницы"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xEpozZ
@xEpozZ
Веб-разработчик
Последовательность должна быть жёсткой и не меняться после перезагрузки страницы

мне нужно только чтобы были 5 рандомных цифр.


А вы точно продумали тз?

------

Есть массив из 5 элементов. Берете рандомный и удаляете его из этого массива. Теперь это массив из 4 элементов. Записываете рандомную строку в бд. Повторяете цикл.
При заходе на страницу проверяете таблицу со сгенерированной последовательностью и достаете все данные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы