Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Случайные 5 из непоследовательных чисел

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Случайные 5 из непоследовательных чисел
smf_kz
Отправлено: 21 Декабря, 2011 - 09:50:48
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Приветствую всех!
В общем такая тема:
Есть некоторый простой массив с числами н-р: 12, 13, 18, 19, 26, 29, 30, 31, 32, 38 и тд.
Нужно выбрать случайные 5 неповторяющихся из них.
Вроде просто, но допереть не могу, заклинило.
Что скажете?
 
 Top
Panoptik
Отправлено: 21 Декабря, 2011 - 09:55:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




PHP:
скопировать код в буфер обмена
  1. $arr = array(12, 13, 18, 19, 26, 29, 30, 31, 32, 38);
  2. shuffle($arr);
  3. for($i=0;$i<5;$i++) {
  4.   //здесь можно последовательно работать с 5 случайными элементами массива
  5. }

(Отредактировано автором: 21 Декабря, 2011 - 09:56:25)



-----
Just do it
 
 Top
smf_kz
Отправлено: 21 Декабря, 2011 - 09:59:45
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. $arr = array(12, 13, 18, 19, 26, 29, 30, 31, 32, 38);
  2. shuffle($arr);
  3. for($i=0;$i<5;$i++) {
  4.   //здесь можно последовательно работать с 5 случайными элементами массива
  5. }

Пробовал, всё равно есть повторения и вместе с mt_rand() и с многим другим.
 
 Top
Panoptik
Отправлено: 21 Декабря, 2011 - 10:01:53
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




а в массиве есть повторения?


-----
Just do it
 
 Top
Мелкий Супермодератор
Отправлено: 21 Декабря, 2011 - 10:02:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





перед shuffle - дубли убрать.


-----
PostgreSQL DBA
 
 Top
smf_kz
Отправлено: 21 Декабря, 2011 - 10:09:13
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Мелкий пишет:
перед shuffle - дубли убрать.

Повторений нет.
array_unique тоже самое.

Вот есть один пример с последовательными числами:

PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. function random($count, $min, $max){
  4.     if(($max - $min) < $count) $count = $max - $min;
  5.    $arr = array();
  6.     while($count){
  7.         $number = mt_rand($min, $max);
  8.         if(!in_array($number, $arr))
  9.         {
  10.          $arr[] = $number;
  11.         }
  12.         else
  13.         {
  14.           $count++;
  15.         }
  16.         $count--;
  17.         }
  18. //Выводит не повторяющиеся числа с случайном порядке от одного до другого диапазона    
  19.        
  20. ?>

(Добавление)
Спасибо всем, парни!
Разобрался вроде, тут DB ещё была.
Спать пошел, ночь была тяжелая.
Тему можно удалять.
 
 Top
Самогонщик
Отправлено: 21 Декабря, 2011 - 10:22:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




smf_kz пишет:
Вот есть один пример с последовательными числами:
Вот ведь сатанизм. Можешь привести кусок кода с входными данными, который возвращает дубли, хотя и не должен и соответствует вышепосоветованному, с примером вывода?

А то что-то я тебе не доверяю...
 
 Top
sKaa
Отправлено: 21 Декабря, 2011 - 10:23:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Спойлер (Отобразить)

Ты очень жестокий человек )) тебе дали готовое решение:
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(12, 13, 18, 19, 26, 29, 30, 31, 32, 38);
  3. shuffle($arr);
  4. for($i=0;$i<5;$i++) {
  5.   echo $arr[$i];
  6. }
  7.  
 
 Top
smf_kz
Отправлено: 21 Декабря, 2011 - 10:24:13
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Самогонщик пишет:
smf_kz пишет:
Вот есть один пример с последовательными числами:
Вот ведь сатанизм. Можешь привести кусок кода с входными данными, который возвращает дубли, хотя и не должен и соответствует вышепосоветованному, с примером вывода?

А то что-то я тебе не доверяю...


Гони дальше самогон.


Отредактировано администратором: EuGen, 21 Декабря, 2011 - 10:28:16
Воздерживайтесь от неаргументированных нападок и переходов на личности. Устное предупреждение
 
 Top
EuGen Администратор
Отправлено: 21 Декабря, 2011 - 10:26:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. $iMin   = 1;
  2. $iMax   = 100;
  3. $iCount = 10;
  4. $rgResult=array_rand(range($iMin, $iMax), $iCount);
  5. //var_dump($rgResult);


?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
smf_kz
Отправлено: 21 Декабря, 2011 - 10:34:51
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Ещё раз всем большое спасибо за помощь, разобрался.
 
 Top
Самогонщик
Отправлено: 21 Декабря, 2011 - 10:40:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




smf_kz пишет:
Спасибо всем, парни!
Разобрался вроде, тут DB ещё была.
Спать пошел, ночь была тяжелая.
Тему можно удалять.
А вот это я и проглядел, видать еще не было когда писал. Не зря я ему не доверял.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB