Четверг, 26 Декабря 2024, 04:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Создание 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, тоже сталкивался с этой проблемой... пришлось делать все через задний проход smile
мне тож интересна данная тема. товарищи знатоки, прошу вас дать нормальный ответ без всякого выпендрежа wink
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

я чуть-чуть посчитал на бумаге, и всё получилось, так что в следующий раз лучше не спеши, если не проверил хотя бы два-три разных варианта, а то конечный ответ может тебя удивить wink

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 иначе оперирует с рандомными числами? не должно так быть.
в общем, моя формула работает, но вряд ли кто-то ей будет пользоваться, а вдруг? smile
И, кстати,
Цитата
далее шли сложные расчеты

никаких сложных расчётов там не шло, довольно просто всё.. wink


- Доброе утро, Агент Пи!

Сообщение отредактировал 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

чё за бред?! wacko
программист во мне пошёл пить валерьянку..


- Доброе утро, Агент Пи!
IvanKorobkoДата: Четверг, 14 Марта 2013, 12:29 | Сообщение # 16
IK Studio
Сейчас нет на сайте
Цитата (Nick_Rimer)
чё за бред?!
программист во мне пошёл пить валерьянку..


Отставить валерьянку) действительно бред, меня на каторгу за дезинформацию, тебе печеньку) ошибся я biggrin

ПС: я далеко не программист, посему полученную в свое время информацию от третьего источника по поводу сего рандома принял как правду без задней мысли и впитал в память) а оказывается меня жестоко обманули sad




Сообщение отредактировал mef1sto - Четверг, 14 Марта 2013, 12:34
Nick_RimerДата: Четверг, 14 Марта 2013, 12:34 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
хех.. ну, это.. бывает у всех! crazy
я подумал и заменил валерьянку на обед с куриной отбивной happy
но это уже чё-то как-то оффтоп.. главное, выяснили, как оно там работает..


- Доброе утро, Агент Пи!
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
дерзай, всё просто и понятно wink


- Доброе утро, Агент Пи!
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг