Задать вопрос
@Gikerven

Не корректно работает функция array_rand как поправить?

Всем привет.

Прописал функцию рандомного ответа в телеграм боте:

function shape($length) {
	
	$items = array(
		'Ответ первый',
		'Ответ второй',
		'Ответ третий',
		'Ответ четвертый',
		'Ответ пятый',
		'Ответ шестой',
		'Ответ седьмой',
		'Ответ восьмой',
		'Ответ девятый',
		'Ответ десятый',
	);
	
	$n = array(1,2,3,4,5,6,7,8,9,10);
	
	microtime()*1000000;
	
	$rand = array_rand($n, $length);
	
	sort($rand);
	
	$random = '';
	
	foreach ($rand as $r) $random = $items[$r] .' ';
	
	return $random;
}


и ее применение:

case'Хочу ответ':
    $ANSWER = shape(2);
    $keyboard = keyboard();
  break;


Проблема: каждый раз при ответе, очень часто попадает в рандом 10ый вариант, 1й и 2ой не выпадает вообще и так же все варианты перебираются в основном из конца списка. Подскажите как поправить?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ну да. Сгенерировать список случайных значений, отсортировать их по возрастанию и взять только последнее. И что это 1 и 2 никогда не попадаются? И почему это 10 чаще всего выпадает?
Замените весь этот бред на одну строку.
return $items[rand(0, count($items) - 1)];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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