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 :: 9 чисел от 1 до 3

 PHP.SU

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


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

> Без описания
vladlen.markhel
Отправлено: 23 Мая, 2016 - 14:19:46
Post Id


Новичок


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


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




Здравствуйте.

Необходимо сгенерировать 9 чисел от 1 до 3 с максимальным повторением 3 раза.

Заранее спасибо.
 
 Top
IllusionMH
Отправлено: 24 Мая, 2016 - 02:35:22
Post Id



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


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


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




vladlen.markhel, сделайте массив со всеми нужными цифрами, а потом shuffle
 
 Top
vladlen.markhel
Отправлено: 24 Мая, 2016 - 07:59:55
Post Id


Новичок


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


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




IllusionMH пишет:
vladlen.markhel, сделайте массив со всеми нужными цифрами, а потом shuffle

Хм, и вправду, не додумался, спасибо Радость Сам уже начал писать функцию)
 
 Top
LIME
Отправлено: 24 Мая, 2016 - 08:03:01
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




IllusionMH зачем? 111222333
сгенерировал?))

vladlen.markhel пишет:
сгенерировать
явно же не заранее прописать
цикл с рандомом и счетчиком повторений
исключение можно реализовать создав массив чисел
сдвигать его и уменьшать рандом(в рандоме не число а его ключ) при достижении счетчиком нужного количества
шикарное слушай тестовое задание)) столько всего сразу на ум пришло))
vladlen.markhel рано тебе еще думаю...за простотой кроется много интересного на алгоритмическое мышление
(Добавление)
vladlen.markhel пишет:
Хм, и вправду
с таким решение даже слушать тебя не станут
явно же не расширяемое решение
а теперь, скажут тебе, числа от 234 до 346585 и до 1234 повторений
как код изменишь?))
(Добавление)
неее....тут интересно можно решить)
(Добавление)
сначала сгенерировать массив возможных чисел
двумерный массив
в первом элементе само число во втором его счетчик (сначала 0)
генерировать в цикле
потом в цикле давать рандом от 0 до кол-ва элементов -1
после получения ключа в результат добавлять число и инкрементиитть счетчик
если счетчик достиг предела вырезать из массива элемент(число с счетчиком...напоминаю масси двумерный)
и уменьшать верхнюю границу рандома
кто понял тому понравится))
абсолютно расширяемое решение
(Добавление)
IllusionMH скажи ему что я прав ато даже читать не станет столько букав))
 
 Top
IllusionMH
Отправлено: 24 Мая, 2016 - 12:19:58
Post Id



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


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


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




LIME, зависит от задачи. В случае когда известен полный набор цифр - проще создать массив со всеми (а в данном простом можно и руками) и шафл сделать.

там где более сложная логика - там уже по 1 за итерацию гененрировать и проверять.
Либо каждую итерацию пересчитывать "веса" отсавшихся вариантов.
 
 Top
LIME
Отправлено: 24 Мая, 2016 - 12:28:25
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




РУКАЛИЦО
IllusionMH да неужели ты не понял подводный камень этой задачи?
прошу прочитай еще раз мое решение внимательно
явно это задача на умение решать проблемы и видеть масштабируемость
 
 Top
IllusionMH
Отправлено: 24 Мая, 2016 - 12:54:49
Post Id



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


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


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




LIME, мне абсолютно всё равно какой подводный камень у задачи. У ТСа него самого голова есть и пусть сам решить что ему подходит или нет.

Видеть масштабируемость - я рассписал выше какие варианты есть и как можно решать.
Нужна будет масштабиреуемость в первом типе - ну напишет функцию которая выдаст массив для шафла.

Преждевременная поддержка масштабируемости - та же проблема что и преждевременная оптимизация. Много раз это выливалось в кучу кода которы писали долго, и потом еще и баги фиксили, вметсо простого решения конкретной задачи.

(Отредактировано автором: 24 Мая, 2016 - 12:58:42)

 
 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