[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать рандомацию PHP
ok47
Здравствуйте, участники форума. Если некоторые слова вам покажутся бессмысленными - не держите зла, я в программировании чуть чуть выше 0, а может и полный ноль, но дело в следующим:

Я хочу сделать форму (наверно на PHP совместно с штмл), и там должно быть следующе - пользователь вводит данные (их я помещаю в переменные - 8 переменных идут по порядку от 1 до 8) - далее эти данные (переменные) вносятся в формулу и подсчитываются по формуле - и потом вывод. Дело в том, что я хочу сделать так чтобы эти переменные вносились в формулу в рандомном порядке, так как не имеет значения в каком порядке они будут вносится...
ПРИМЕР
1) Пользователь заполняет форму с данными (они поместились в переменные от 1 до 8):
1 2 3 4 5 6 7 8
2) Далее эти переменные помещаются в формулу каждая на свое место:
места в формуле - 1 2 3 4 5 6 7 8
переменные с даными - 1 2 3 4 5 6 7 8 или
переменные с даными - 2 3 4 5 6 1 7 8 или
переменные с даными - 8 6 4 2 1 3 5 7 или
переменные с даными - ... и так до бесконечности (нужно, чтобы эти комбинации не повторялись)
3) Вывод результата подсчета через формулу

Уважаемые программисты, если я влез не в ту тему - не ругайте, подскажите где поискать. С этой темы я только заголовок прочитал и вопрос с кода я мало, что понял, голова уже кругом ходит - гуглю уже долгий час. Насчет найма с удовольствием - денег не жалко, но именно такой момент, что с этим недостаток... Спасибо вам, что прочитали мое сообщение, кто компетентный в этом вопросе подскажите...

P.S. Если это играет роль, то в каждой переменной с данными, например переменная с данными 1 будет иметь 4 поля для заполнения (ауди-бмв-цена-качество) и так для всех 8 переменных, и каждая из них будет также вставлятся в формулу каждая в свое поле,
НАПРИМЕР
места в формуле1: марка авто1 - марка авто2 - деньги - особености
переменные с данными1: ауди - бмв - цена - качество

Вообщем мне нужно чтобы вставлялись в рандомном (хаотичном) порядке не эти данные, а данные с первого примера - эти данные я думаю может поместить в массив... тогда в ПРИМЕР будет не переменные а массивы, хотя я пока не знаю как надо делать и поэтому прошу у вас подсказки.




Спустя 19 минут, 56 секунд (21.02.2012 - 14:37) killer8080 написал(а):
Цитата (ok47 @ 21.02.2012 - 13:18)
я хочу сделать так чтобы эти переменные вносились в формулу в рандомном порядке, так как не имеет значения в каком порядке они будут вносится...

загоняй их в массив и перемешивай с помощью shuffle

Спустя 59 минут, 57 секунд (21.02.2012 - 15:37) SerginhoLD написал(а):
Я ниче не понял )


Цитата (ok47 @ 21.02.2012 - 11:18)
я хочу сделать так чтобы эти переменные вносились в формулу в рандомном порядке, так как не имеет значения в каком порядке они будут вносится...

зачем тогда их вообще вносить в случайном порядке? если тебе все равно? smile.gif

Спустя 3 минуты, 11 секунд (21.02.2012 - 15:41) ok47 написал(а):
формула секретная) Если есть, еще предложения бросайте, а то я с shuffle пока еще не до конца разобрался... Пока еще темнота в голове...

Спустя 58 минут, 28 секунд (21.02.2012 - 16:39) walerus написал(а):
ok47 - формула?, секретная?? - да ну брось, если везде сложение, то смысла нет менять, результат будет один и тот же, если умножение деление, то тогда не правильно ставишь задачу, потому как может случится деление на ноль.

Темните Вы батенька ))), а с shuffle - ты и не пытался разобраться, это просто оператор shuffle( $array ); - перемешать массив, что тут разбирать то ?



Спустя 1 минута, 55 секунд (21.02.2012 - 16:41) killer8080 написал(а):
Цитата (ok47 @ 21.02.2012 - 14:41)
формула секретная)

ну так запатентуй её laugh.gif

Спустя 11 минут, 59 секунд (21.02.2012 - 16:53) ok47 написал(а):
На счет шефилда раскусили, я так только общему просмотрел, сейчас немного другим занимаюсь, если времени хватит вечером, уже подробнее посмотрю.

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

1) ввод информации пользователем, которая заносится в масив
1 (а1,б1,в1,г1)
2 (а2,б2,в2,в2)
3 ... и так далее до 8

shuffle

2) занос данных в формулу и подсчет

1. 2(а2,б2,в2,г2)
2. 1 (а1,б1,в1,г1)
3. ... до 8

3) вывод информации:

......
Правильно?

Еще один вопрос, как сделать если информакция в а1 а2 а3 а4 а5 а6 а7 а8 повторяется, то выводить "информация повторяется...", а если пусто - "заполните такю то такую строку"?
Спасибо за совет Killer8080 - это как раз в разработке...

Спустя 1 минута, 29 секунд (21.02.2012 - 16:54) ok47 написал(а):
Это каждой переменной а-г нужно прописывать иф елсе

Спустя 9 минут, 2 секунды (21.02.2012 - 17:03) SerginhoLD написал(а):
Цитата (ok47 @ 21.02.2012 - 13:53)
Еще один вопрос, как сделать если информакция в а1 а2 а3 а4 а5 а6 а7 а8 повторяется, то выводить "информация повторяется..."

циклом перебирать, можно for двойной использовать, на основе пузырьковой сортировки

Спустя 36 минут, 29 секунд (21.02.2012 - 17:40) walerus написал(а):
Цитата
Еще один вопрос, как сделать если информакция в а1 а2 а3 а4 а5 а6 а7 а8 повторяется, то выводить "информация повторяется..."

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

На счет сравнения введенных, предыдущих, данных, либо в файл, либо в сессию пхать. С файлом, могут быть проблемы, т.к. следующий пользователь может уже использовать данную форму, и уже будут не те данные.

После сохранения считывать данные и сравнивать с введенными.

P.S. Говорю же, - велосипед.

Спустя 15 минут, 30 секунд (21.02.2012 - 17:55) ok47 написал(а):
) Я толь вчера это придумал... Именно в этом и смысл, что нужно все перемешать... Чтобы было, что то похожее на генератор случайных чисел, но только похожее для того чтобы вы примерно поняли что я хочу сделать, но это не генератор и не чисел...
Как я понимаю, tсли один пользователь введет слово ауди, то другой, если я сделаю, то что спрашивал, при вводе слова ауди будет выводить "информация повторяется"?
А можно сделать это как, например калькулятор, ввел даные подсчитал вышел и все настройки сбились, или это уже не "песня" а целый "фестиваль"?

Спустя 6 минут, 5 секунд (21.02.2012 - 18:02) shmali написал(а):
Цитата
А можно сделать это как, например калькулятор, ввел даные подсчитал вышел и все настройки сбились, или это уже не "песня" а целый "фестиваль"?


Если ты данные не сохраняешь - то и делать ничего не надо ..
метод отработал , выдал результат и КОНЕЦ.
А если сохраняешь и тянешь из бд , то перед тем как записать проверяй , есть такое слово или нет .

Спустя 6 минут, 25 секунд (21.02.2012 - 18:08) ok47 написал(а):
Сохранять не нужно.
т. е. $a1= "вводимые данные" if $a1 равна (забыл символ, потом посмотрю в записях) $a2 или $a3 или $b1 или $г3 или и так пересчитываю все переменные на этом уровне else echo "информация повторяется"
Правильно?
А если эти переменные в масиве, то вывожу их с масива и тоже делаю что ввыше написал?
Потом уже их вставляю в формулу - подсчет - и вывод на экран.

Спустя 5 минут, 46 секунд (21.02.2012 - 18:14) walerus написал(а):
ok47
Цитата
Как я понимаю, tсли один пользователь введет слово ауди, то другой, если я сделаю, то что спрашивал, при вводе слова ауди будет выводить "информация повторяется"?

Без обид, но ты не понимаешь ничего вообще, то что ввел один человек, и потом введет другой человек, это будет РАЗНЫМ, если использовать SESSION, а если использовать файл, то да, именно так и будет, если введет кто то "ауди", то для следующего "ауди", будет считаться уже введенным.

Совет: - не строй велосипед ), не знаю каких целей ты добиваешься, но половина маневров не нужна, все решится в 20ть строчек кода...

1) Получить поля введенные пользователем.
2) Проверить их на "пустоту", выдать ошибку если пусто.
3) Сделать перемешивание и вывести результат формулы.

Все.

Дописываю...
Цитата
т. е. $a1= "вводимые данные" if $a1 равна (забыл символ, потом посмотрю в записях) $a2 или $a3 или $b1 или $г3 или и так пересчитываю все переменные на этом уровне else echo "информация повторяется"


А если в поле не $a1, а в поля $a2, $a4, будет введено одно и тоже ? тогда как? ))).

Поставь задачу корректно, что должно быть что нет, по 10ть раз переписывать одно и то же никто не будет )..


Спустя 1 минута, 36 секунд (21.02.2012 - 18:15) shmali написал(а):
Слушай я не знаю , может только у меня голова кругом когда я твой текст читаю ...
Как то структурируй текст сообщения.
как я это вижу :

1.Пользователь заполнил все поля
2.Переменные улетели на проверку (там сравнивай как твоей душе угодно)
3. Если все "ОК" передаешь их в формулу , если нет - вывод сообщения.
4.Отработала формула - вернула результат
5.Вывод результата.

Ты говоришь как то загадками , скажи прямо чего тебе надо .
Люди никак въехать не могут чего ты добиться пытаешься .

Спустя 13 минут, 5 секунд (21.02.2012 - 18:28) ok47 написал(а):
Вначале я так и думал, но с каждым ответом я все больше понимаю, что начинаю путаться и возможно задавать не те вопросы, в чем и есть ошибка моего не понимания ситуации. Возможно я в начале рассказал только часть вопроса, а хотел услышать ответ на весь вопрос... Приношу свои извинения, что вводил в блудняк вас и себя заодно завел...
Должно быть так:

- в поля форм человек вводит данные ( это таблица 4 поля в столбец [пускай будут переменными которые находятся в одном масиве из 8 полей в ряд] и 8 полей в ряд)
- если в некоторых поля (2 из 4 полей в столбец) повторяются выводить "информ. повторяется"
- 8 полей (масивов с 4 переменными в себе) в ряд перемешиватся
- вставляются в формулу, которая делаэт с ними определенные действия (+, -, /, *)
- выводится результат в новых таблицах и на новой странице сайта...
Сейчас я еще фото приготовлю, а то только сейчас обнаружил, что можно пдобавить и фото, так как я не частый участник форумов в основном читаю.

Спустя 12 минут, 16 секунд (21.02.2012 - 18:41) shmali написал(а):
Цитата
- в поля форм человек вводит данные ( это таблица 4 поля в столбец [пускай будут переменными которые находятся в одном масиве из 8 полей в ряд] и 8 полей в ряд)


... у меня взорвался мозг. Ничерта не понимаю .... Может просто устал

Спустя 1 минута, 31 секунда (21.02.2012 - 18:42) ok47 написал(а):
Посмотрите на фото
Что я хочу сделать:
Переменные "инфо 1,11,22,33" - заносятся в масив "данные1"
переменные "инфо 2,44,55,77" - заносятся в масив "Данные2"
итак пускай до 8 массивов
Но переменные инфо 1, 11, 2,44 и все что под ними не должны повторятся.

Масивы нужно перемешать и вновь выстроить по порядку, например:

Данные5
Данные8
Данные2
Данные6
Данные1
...
потом их в перемешаном порядке по очереди всиавить в формулу и вывести на новой странице, а лучше ниже таблицы для ввода данных (под ней).
))) надеюсь теперь будет более понятно...

Спустя 14 секунд (21.02.2012 - 18:42) walerus написал(а):
Нда ), не легче )))

Как я понял...

Есть таблица, в ней, 4ре СТРОКИ, по 8мь КОЛОНОК в каждой, каждая ячейка в таблице, это форма <input type="text">.

ЗАДАЧА:
1) Все поля не должны быть пустыми, вводится что угодно, цифры, буквы, слова, символы...
2) Если какая нибудь из СТРОК полностью совпадает с предыдущей/последующей, то вывести ошибку и вернуться обратно к заполнению формы.
3) Если все в порядке, то произвести расчеты ДЛЯ КАЖДОЙ СТРОКИ, используя формулу:
$result = $id_1 + $id_2 + $id_3 + $id_4 + $id_5 + $id_6 + $id_7 + $id_8;
4) Выдать результат в виде массива:

array( $result_string_1, $result_string_2, $result_string_3, $result_string4 );

Все.

Я так понял ???

P.S. - shmali- ждем фото )))

Спустя 3 минуты, 27 секунд (21.02.2012 - 18:46) walerus написал(а):
Цитата
Но переменные инфо 1, 11, 2,44 и все что под ними не должны повторятся.
не должны повторяться вообще, или в одних и тех же ячейках?? типа

инфо 1 не должно быть равно,
ни инфо 2, ни инфо 3, ни инфо 4, ни инфо 5, ни инфо 6, ни инфо 7, ни инфо 8?

или же инфо 1 не должно быть равно, ни одному полю вообще ??

Спустя 3 минуты, 8 секунд (21.02.2012 - 18:49) shmali написал(а):
Цитата
Масивы нужно перемешать и вновь выстроить по порядку, например:

Данные5
Данные8
Данные2
Данные6
Данные1


Ты издеваешься ? на..рена его сначала перемешивать и тут же выстраивать по порядку ???

Спустя 1 минута, 27 секунд (21.02.2012 - 18:50) ok47 написал(а):
Поля в которых точки не должны повторятся - пока пользователь не обновит страницу.

Спустя 9 минут, 40 секунд (21.02.2012 - 19:00) ok47 написал(а):
Цитата (shmali @ 21.02.2012 - 15:49)
Цитата
Масивы нужно перемешать и вновь выстроить по порядку, например:

Данные5
Данные8
Данные2
Данные6
Данные1


Ты издеваешься ? на..рена его сначала перемешивать и тут же выстраивать по порядку ???

Я уже писал, что может мои вопросы для вас будут бессмысленны, но помогите, я не начинающий фрилансер, это для меня и возможно это поможет многим людям, если будет осуществлено в жизнь. Денег нет чтобы нанимать профи, вот и спрашиваю добрых людей... Я знаю для некоторых это написать, тоже что и чай сделать. Но для меня пока немного сложновато.
Хочу понять последовательность как делать и что искать...
Пока с вами общался уже узнал некоторое, чтобы искал в интернете более 3 дней и это как минимум...
Спасибо что комментируете мои сообщения.

Спустя 6 минут, 57 секунд (21.02.2012 - 19:07) walerus написал(а):
Цитата
Поля в которых точки не должны повторятся - пока пользователь не обновит страницу.


можно подробнее пояснить, я уже в который раз пытаюсь выяснить...

Цитата
не должны повторяться вообще, или в одних и тех же ячейках?? типа

инфо 1 не должно быть равно,
ни инфо 2, ни инфо 3, ни инфо 4, ни инфо 5, ни инфо 6, ни инфо 7, ни инфо 8?

или же инфо 1 не должно быть равно, ни одному полю вообще ??


Вот прям напиши, поле инфо 1, не должно быть равно, и перечисляй, потом дальше, поле инфо 2, не должно быть равно.... и так до конца, а то ты выделил две колонки и 8мь строк, что с чем сравнивать я не догоняю )).

Я не гуру пхп, но решить это можно, только поставь правильно задание ))

Спустя 3 минуты, 16 секунд (21.02.2012 - 19:10) ok47 написал(а):
Информация в этих полях не должна быть одинаковой - КОТОРЫЕ ПОМЕЧЕНЫ КРАСНЫМ ЦВЕТОМ

Спустя 5 минут, 30 секунд (21.02.2012 - 19:16) ok47 написал(а):
Понял. Слово инфо я пропущу напищу только цифры:

поле 1 не должно быть равно - 2,3,4,5,6,7,8,11,44,99 .....(под 99 поля до самого низу 5 ячеек)
поле 2 не должно быть равно - 1,3,4,5,6,7,8,11,44,99 .....(под 99 поля до самого низу 5 ячеек)
поле 3 не должно быть равно - 1,2,4,5,6,7,8,11,44,99 .....(под 99 поля до самого низу 5 ячеек)
И так далее если посмотреть это и будет 2 первые колонки - они не должны быть с одинаковыми данными.

Спустя 1 час, 14 минут, 24 секунды (21.02.2012 - 20:30) shmali написал(а):
Смотри , описываю схему. Если конечно я правильно понял чего ты хочешь .

1. Циклом загоняешь первые 2 значения каждого массива -> в новый массив.

2.потом делаешь
array_unique();

если на выходе НЕ 16 элементов(Это конкретно для ситуации показанной на скриншоте) - значит были повторения и можешь смело выводить ошибку.

Спустя 2 часа, 38 минут, 5 секунд (21.02.2012 - 23:08) walerus написал(а):
ok47 - В общем, готово твое зло, я написал, ровно 123 строчки, с формой, с сообщениями об ошибках, с таблицей, с запоминанием полей, которые были введены при допущенной ошибке, что бы было удобнее пользователю.

Итог: Показывай свои мысли, наработки, что ты пробовал писать и как, что бы я понял что ты тоже старался, тогда покажу код без оплаты ))) иначе, только за деньги. rolleyes.gif

Спустя 4 минуты, 41 секунда (21.02.2012 - 23:13) shmali написал(а):
Я тоже хочу на это посмотреть )))

Спустя 5 дней, 17 часов, 57 минут, 44 секунды (27.02.2012 - 17:11) ok47 написал(а):
Здравствуйте, уважаемы программисты.
Тут дело в следующем, функция shuffle в этот скрипт не подходит, так как она перемешивает элементы массива, а мне нужно перемешать сами массивы... Если кто знает подскажите как это можно сделать.
Прошлый раз я хорошенько вам "попарил мозги", но сделал вывод и написал полностью, то что я хочу чтобы было - все в прикрепленном файле.
Спасибо за внимание!

Спустя 10 минут, 52 секунды (27.02.2012 - 17:22) redreem написал(а):
Цитата
нужно, чтобы эти комбинации не повторялись


в комбинаторике это называется "перестановки"
http://hijos.ru/izuchenie-matematiki/algeb...ki-sochetaniya/

http://oooportal.ru/?cat=article&id=685
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.