php. Генерация предсказуемых случайных чисел/значений
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Предположим, что вы разрабатываете приложение, которое должно отображать пользователю список вопросов и ответов. При этом данный список должен быть условно предсказуем и должен выдавать одни и те же значения с вопросом, чтобы гарантировать повторяемость поведения программы.
Для генерации предсказуемых(заранее известных) значений, необходимо инициализировать генератор случайных чисел с заранее известным значением. Для этого можно воспользоваться функцией mt_srand() или srand().
Предположим, что мы разрабатываем викторину, где должны отображаться вопросы и варианты ответов.
И задаваемый вопрос должен быть простым иусловно известен.
Инициализируем массив со списком вопросов и ответов:
Создадим генератор вопросов и ответов, который будет динамически выдавать вопрос:
Инициализируем генератор случайных чисел и передаем ему целочисленное значение параметра переинициализации (Для примера я передал значение 12345).
Таким образом мы получим заранее заготовленное значение с вопросом и правильным ответом, возвращенное генератором.
Запустим генератор и выведем заготовленный вопрос:
Распечатаем весь список ответов:
Результат:
Благодаря mt_srand(12345), данный код, при каждом его вызове, будет выдавать всегда один и тот же вопрос.
И для демонстрации распечатаем ответ на вопрос:
Весь код, описанный в данной статье:
Для генерации предсказуемых(
Предположим, что мы разрабатываем викторину, где должны отображаться вопросы и варианты ответов.
И задаваемый вопрос должен быть простым и
Инициализируем массив со списком вопросов и ответов:
$list = [
[
'question' => 'Какая столица у португалии?',
'answer' => 'Лиссабон'
], [
'question' => 'Какой химический символ для серебра?',
'answer' => 'Ag'
], [
'question' => 'Кто изобрел граммофон?',
'answer' => 'Эмиль Берлинер'
], [
'question' => 'В какой стране находится Колизей?',
'answer' => 'Италия'
]
];
Создадим генератор вопросов и ответов, который будет динамически выдавать вопрос:
function questionGenerator($list) {
$i = mt_rand(0, count($list) - 1);
return $list[$i];
}
Инициализируем генератор случайных чисел и передаем ему целочисленное значение параметра переинициализации (Для примера я передал значение 12345).
Таким образом мы получим заранее заготовленное значение с вопросом и правильным ответом, возвращенное генератором.
mt_srand(12345);
Запустим генератор и выведем заготовленный вопрос:
$data = questionGenerator($list);
print $data['question'] . '<br \>';
Распечатаем весь список ответов:
foreach ($list as $item) {
print $item['answer'] . ' ';
}
Результат:
Благодаря mt_srand(12345), данный код, при каждом его вызове, будет выдавать всегда один и тот же вопрос.
Если в функцию mt_srand не передавать никакого значения, то вопрос всегда будет разным.
И для демонстрации распечатаем ответ на вопрос:
print 'Правильный ответ: ' . $data['answer'] . '<br>';
Весь код, описанный в данной статье:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.