Help: Случайный вывод

1. ШЕДЕВР (03.11.2009 / 09:37)
Условно есть слова:
Привет
Здорово
Салют
Хай
Закидываем их в переменные:
1, 2, 3 и 4.
Теперь нужно в случайном порядке вывести 2 значения.
Пробовал через Rand(), но он иногда дает повтор значений (2 и 2, 4 и 4... А нужно 1 и 3, 4 и 2, 2 и 1...)
П. С. Значений может быть и не 4 а 10 или больше/меньше.
Заранее спасибо.

2. Андрюха (03.11.2009 / 10:13)
mt_rand();

3. Удаленный (03.11.2009 / 10:45)
$array = array('привет', 'здорово', 'салют', 'хай');
$rand = rand(0, count($array)-1);
echo $array[$rand]; //первое приветствие
unset($array[$rand]);
$array = implode($array);
$rand = rand(0, count($array)-1);
echo $array[$rand]; //второе приветствие

4. ШЕДЕВР (03.11.2009 / 12:21)
3, а если третье приветствие, то как бЫть???

5. Влад (03.11.2009 / 12:24)
Юзай mt_rand(); для более непредсказуемого результата

6. Удаленный (03.11.2009 / 13:00)
4, просто повторно пишешь строки, начиная с первой строки после 1 приветствия и заканчивая строкой echo $array[$rand];

7. iv7 (03.11.2009 / 13:02)
4, добавь к коду(3й пост) тоже самое, но начиная с unset(...

8. Валерий (03.11.2009 / 13:39)
Можно так попробовать
$array = array('привет', 'здорово', 'салют', 'хай');
$c=count($array)-1;
$array1=array();
for($i=1;$i<=2;$i++)
{
	$r=false;
	while(!$r)
	{
	$world=rand(0,$c);
	if(array_search($world,$array1))continue;
	$r=true;
	}
$array1[]=$world;
echo $world;
}


9. ШЕДЕВР (03.11.2009 / 15:51)
8, спасибо, но часто генерируются повторыне числа!..
22, 11, 00....

10. Валерий (03.11.2009 / 15:58)
дак там же проверка на это.. ты код испробовал?

11. Удаленный (03.11.2009 / 16:22)
проще сделать так:
$j = 2; //количество приветствий
$array = array('привет', 'здорово', 'салют', 'хай');
for($i=1; $i<=$j; $i++)
{
$rand = rand(0, count($array)-1);
echo $array[$rand];
unset($array[$rand]);
$array = implode($array);
}

12. Удаленный (03.11.2009 / 16:25)
повтор

13. Удаленный (03.11.2009 / 16:26)
извините, телефон *** глючит

14. ramzes (03.11.2009 / 17:11)
Гм.. http://smartoff.net/php_function/index.php?function=array-rand
стандартные функции уже не в ходу?

15. Анатолий (03.11.2009 / 18:16)
$max=10; // Кол-во приветов :) 
$pre='';
$array = array('привет', 'здорово', 'салют', 'хай');
$count=count($array)-1; //Кол-во елементов для mt_rand()
for($i=0;$i<$max; $i++){
  $val=$array[mt_rand(0,$count)]; //генерация
  if($count>0){// Если есть хотя бы 2 елемента
    while($val==$pre){
      $val=$array[mt_rand(0,$count)]; //Чтоб не совпадали 2 подряд
    };
  };
  $pre=$val; //Запоминаем текущее значение для следующего шага
}


16. Удаленный (03.11.2009 / 18:25)
15, смотри 14 пост.

17. Удаленный (03.11.2009 / 18:28)
15, смотри 14 пост.

18. Анатолий (03.11.2009 / 18:30)
16, смотри пост #4,
а насчет 14,
srand() и mt_srand() теперь можно не писать, (РНР 4.3.х >).

19. Александр (03.11.2009 / 18:30)
<?php
$a=explode(',','Привет,Здорово,Салют,Хай');
shuffle($a);
echo $a[0].'<br/>'.$a[1];
 ?>


URL: https://visavi.net/topics/2375