Создание random от одного числа до другого
|
|
AndrewVersus | Дата: Четверг, 14 Марта 2013, 00:32 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| Нашел на форуме тему http://gcup.ru/forum/39-28802-1, однако при использовании normalrandom спрайт "прыгает" от одной точки к другой. подскажите как создать random от одного числа до другого, а не от 0.
Sunspire Путин против Инопланетян
|
|
| |
Маркер | Дата: Четверг, 14 Марта 2013, 00:36 | Сообщение # 2 |
Я таки выше этого
Сейчас нет на сайте
| Это очень сильное колдунство. Когда-нибудь изучал информатику в школе? А, подожди, сложение же используют в математике. Изучал математику?
Я не понял смысл твоего поста, поэтому он автоматически может считаться оффтопом. Андрей, 14 лет Если ты ничего не понимаешь в игрострое, то тебе нечего делать на курсах программистов. Андрей, 14 лет
|
|
| |
AndrewVersus | Дата: Четверг, 14 Марта 2013, 00:38 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Маркер, ты про что вообще? я вопрос некорректно задал?
Sunspire Путин против Инопланетян
|
|
| |
Маркер | Дата: Четверг, 14 Марта 2013, 00:41 | Сообщение # 4 |
Я таки выше этого
Сейчас нет на сайте
| Нет, его вообще не следовало задавать. Просто нужно иногда думать. Если нам нужно от двадцати до тысячи, мы берем рандом от нуля до девятисот восьмидесяти и... что с ним делаем?
Я не понял смысл твоего поста, поэтому он автоматически может считаться оффтопом. Андрей, 14 лет Если ты ничего не понимаешь в игрострое, то тебе нечего делать на курсах программистов. Андрей, 14 лет
|
|
| |
AndrewVersus | Дата: Четверг, 14 Марта 2013, 00:58 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Маркер, Ну не все же тут вундеркинды! а по совместительству альтернативно одаренные. можно на впорос вопросом не отвечать а дать конкретный ответ, сделав скидку на простых смертных.
Sunspire Путин против Инопланетян
|
|
| |
cnstntn | Дата: Четверг, 14 Марта 2013, 01:30 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| AndrewVersus, тоже сталкивался с этой проблемой... пришлось делать все через задний проход мне тож интересна данная тема. товарищи знатоки, прошу вас дать нормальный ответ без всякого выпендрежа
|
|
| |
vicu2010 | Дата: Четверг, 14 Марта 2013, 01:32 | Сообщение # 7 |
Сейчас нет на сайте
| n - от m - до random(m)+n
лохъ
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
Сообщение отредактировал vicu2010 - Четверг, 14 Марта 2013, 01:32 |
|
| |
AndrewVersus | Дата: Четверг, 14 Марта 2013, 02:18 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| vicu2010, Маркер, Ну что за клоуны ! танцы с бубном любой может изобразить. хорошо, допустим мне нужно чтобы спрайт с середины экрана двигался либо( random) от x=100 до x= 700, что тогда. существуют отдельные команды для таких вещей, а создание формул на пустом месте привилегия лохъ.
Sunspire Путин против Инопланетян
|
|
| |
IvanKorobko | Дата: Четверг, 14 Марта 2013, 06:32 | Сообщение # 9 |
IK Studio
Сейчас нет на сайте
| Цитата (AndrewVersus) мне нужно чтобы спрайт с середины экрана двигался либо( random) от x=100 до x= 700
перемещение по Х: random(601)+100
Сообщение отредактировал mef1sto - Четверг, 14 Марта 2013, 12:30 |
|
| |
Nick_Rimer | Дата: Четверг, 14 Марта 2013, 08:09 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| vicu2010, Цитата n - от m - до random(m)+n тут ты неправ..
это сработает, если нужно, например, от 1 до 100, твоя формула: random(100)+1, это даёт нам 1..100 НО допустим, нужно от 0 до 100. По твоей формуле: random(100)+0, что даст нам 0..99 или же от 5 до 200. По твоей формуле опять же: random(200)+5 даст нам 5..204 НЕ АЙС!
путём нехитрых математических ухищрений с карандашом и бумагой я вывел формулу, как получить случайное число x из диапазона от n до m: x = random(m-n+1)+n
пробуем диапазон 12..84 (распишу прям подробно) x = random(84-12+1)+12 = random(73)+12 = (0..72)+12 = 12..84 для диапазона 151..475 x = random(475-151+1)+151 = random(325)+151 = (0..324)+151 = 151..475
я чуть-чуть посчитал на бумаге, и всё получилось, так что в следующий раз лучше не спеши, если не проверил хотя бы два-три разных варианта, а то конечный ответ может тебя удивить
P.S. надеюсь, паскальная запись множества n..m никого не удивила (кто не понял, здесь это значит весь диапазон целых чисел от n до m)
- Доброе утро, Агент Пи!
|
|
| |
Маркер | Дата: Четверг, 14 Марта 2013, 08:20 | Сообщение # 11 |
Я таки выше этого
Сейчас нет на сайте
| Цитата (AndrewVersus) существуют отдельные команды для таких вещей, а создание формул на пустом месте привилегия лохъ. Ну и сиди тогда вечность на всяких кнопочных конструкторах, если для тебя это настолько сложная задача.
Я не понял смысл твоего поста, поэтому он автоматически может считаться оффтопом. Андрей, 14 лет Если ты ничего не понимаешь в игрострое, то тебе нечего делать на курсах программистов. Андрей, 14 лет
|
|
| |
IvanKorobko | Дата: Четверг, 14 Марта 2013, 09:38 | Сообщение # 12 |
IK Studio
Сейчас нет на сайте
| Цитата (Маркер) или же от 5 до 200. По твоей формуле опять же: random(200)+5 даст нам 5..204
верно.
Сообщение отредактировал mef1sto - Четверг, 14 Марта 2013, 12:30 |
|
| |
Nick_Rimer | Дата: Четверг, 14 Марта 2013, 09:45 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Цитата random(195)+5 итого рандом от 5 до 200... эм.. если я что-то в чём-то понимаю, то random(K) даст нам K значений в диапазоне 0..(K-1) таким образом random(195) даст нам 0..194 (а ещё плюс 5, как в твоём примере, итого 5..199) так что тогда уж надо random(196)+5.
быть может construct classic иначе оперирует с рандомными числами? не должно так быть. в общем, моя формула работает, но вряд ли кто-то ей будет пользоваться, а вдруг? И, кстати, Цитата далее шли сложные расчеты никаких сложных расчётов там не шло, довольно просто всё..
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Четверг, 14 Марта 2013, 09:49 |
|
| |
IvanKorobko | Дата: Четверг, 14 Марта 2013, 11:51 | Сообщение # 14 |
IK Studio
Сейчас нет на сайте
| Цитата (Nick_Rimer) то random(K) даст нам K значений в диапазоне 0..(K-1)
верно.
Сообщение отредактировал mef1sto - Четверг, 14 Марта 2013, 12:29 |
|
| |
Nick_Rimer | Дата: Четверг, 14 Марта 2013, 12:01 | Сообщение # 15 |
заслуженный участник
Сейчас нет на сайте
| Цитата в CC random(195)+5 даст именно от 5 до 200 чё за бред?! программист во мне пошёл пить валерьянку..
- Доброе утро, Агент Пи!
|
|
| |
IvanKorobko | Дата: Четверг, 14 Марта 2013, 12:29 | Сообщение # 16 |
IK Studio
Сейчас нет на сайте
| Цитата (Nick_Rimer) чё за бред?! программист во мне пошёл пить валерьянку..
Отставить валерьянку) действительно бред, меня на каторгу за дезинформацию, тебе печеньку) ошибся я
ПС: я далеко не программист, посему полученную в свое время информацию от третьего источника по поводу сего рандома принял как правду без задней мысли и впитал в память) а оказывается меня жестоко обманули
Сообщение отредактировал mef1sto - Четверг, 14 Марта 2013, 12:34 |
|
| |
Nick_Rimer | Дата: Четверг, 14 Марта 2013, 12:34 | Сообщение # 17 |
заслуженный участник
Сейчас нет на сайте
| хех.. ну, это.. бывает у всех! я подумал и заменил валерьянку на обед с куриной отбивной но это уже чё-то как-то оффтоп.. главное, выяснили, как оно там работает..
- Доброе утро, Агент Пи!
|
|
| |
cnstntn | Дата: Четверг, 04 Апреля 2013, 19:23 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| ну и что в итоге? что в самой программе-то писать?! ничего не понятно... мне нужно расстояние только от 200 до 600 я должен писать random(400)+200? или как?
|
|
| |
IvanKorobko | Дата: Четверг, 04 Апреля 2013, 19:27 | Сообщение # 19 |
IK Studio
Сейчас нет на сайте
| Цитата (cnstntn) я должен писать
random(401)+200
|
|
| |
Nick_Rimer | Дата: Четверг, 04 Апреля 2013, 21:36 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| cnstntn, я же дал нормальную рабочую формулу для любого диапазона!!! random(m-n+1)+n математику в школе, думаю, учил.. просто переменные нужно заменить реальными значениями (n - нижний предел, m - верхний предел) и посчитать сложение, вычитание - вообще начальная школа..
берём n=200, m=600 подставляем в формулу: random(600-200+1)+200 складываем то, что в скобке, и получается random(401)+200
это-то и написал mef1sto дерзай, всё просто и понятно
- Доброе утро, Агент Пи!
|
|
| |