Суббота, 30 Ноября 2024, 02:46

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Сгенерировать рандомное число, но с приоритетом
robertonoДата: Вторник, 30 Июля 2013, 00:20 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Например мне нужно сгенерировать рандомное число от -2000 до 2000.
Но что бы был приоритет на 500 500. Т.е. Что бы чаще появлялось число от 250 до 750.
Можно как то сделать?
Точнее как? smile
AsteroidДата: Вторник, 30 Июля 2013, 00:32 | Сообщение # 2
Blender updated
Сейчас нет на сайте
можно.
Боюсь придется оперировать сверх малыми числами при таком диапазоне цифр.
ну для примера : для выпада числа 1 щанс = 0.0000001 , для числа 2 = 0.00000005 . как видно у числа 1 шанс выпадения выше чем у числа 2. ну и в таком роде остальные.
да и как во многих мат-операциях желательно придерживаться еденицы в результате ( сумма всех чисел должна быть =1)


Сообщение отредактировал Asteroid - Вторник, 30 Июля 2013, 00:45
robertonoДата: Вторник, 30 Июля 2013, 00:35 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
Asteroid, и как?
mitchДата: Вторник, 30 Июля 2013, 00:44 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
в игре WoT подобное используется для разброса снарядов
попробуй почитать это: http://ru.wikipedia.org/wiki/Среднеквадратичное_отклонение
allodsДата: Вторник, 30 Июля 2013, 02:22 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Сделай 2 рандома, первый с 0 до 10. Если выпадает больше 4х то во второй рандом будет от 250-750. Если меньше 4х то остальное. Получается у тебя 6 шансов из 10 что будет 250-750 ну и 4 другое
pixeyeДата: Вторник, 30 Июля 2013, 10:14 | Сообщение # 6
Red Winter Software
Сейчас нет на сайте
эх.

Первое. Создаешь массив для вариантов. Массив типа float.



Сколько вариантов столько у тебя в массиве и значений, каждое же значение равно шансу выпадения. В совокупности все значения должны давать 1.0 Тоесть если у тебя два значения в массиве то это будет например 0.5 0.5 ( 50 на 50 ), 0.7 на 0.3 ( 70 на 30 ) и так далее.

Пишешь метод возращающий индекс ( лучше конечно его int делать, но влом уже )



Дальше просто создаешь переменную конечного значения и запускаешь ранее созданный метод в который передаешь массив значений что объявил в самом начале:



Дальше имея индекс играешь как хочешь. Например так: ( сразу должен заметить что из-за косяка с объвлением типа переменной пришлось перегонять в int, как то так проще



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

Большим плюсом является универсальность метода и его абстрактность: можно применять и в других участках игры


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

TiendilДата: Вторник, 30 Июля 2013, 10:17 | Сообщение # 7
участник
Сейчас нет на сайте
это называется Нормальное распределение.

Для любого языка можно нагуглить соответствующую библиотеку (у некоторых оно есть в стандартной).


Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )

Текущий проект: the-tale.org - indie mmozpg
  • Страница 1 из 1
  • 1
Поиск:

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