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