Я хотел бы добавить "средний" параметр в Random.Next(Lower, Upper)
. Этот метод имел бы параметры min
, max
и average
. Я создал метод, подобный этому, для тестирования (он использовал списки и был ужасен), поэтому мне хотелось бы, чтобы некоторые идеи о том, как написать правильную реализацию.
Причиной такой функциональности является множество процедурных/случайных событий в моей игре. Предположим, что вы хотите, чтобы деревья составляли 10 единиц в большую часть времени, но все равно могут быть как 5 или 15. Нормальный Random.Next(5,15)
будет возвращать результаты повсюду, но этот метод будет иметь больше кривых колокола по отношению к ним. Значение 10 будет наиболее распространенным, и выход в каждом направлении будет менее распространенным. Например, перемещение среднего значения до 7 приведет к относительно небольшим деревьям (или независимо от того, что это используется), но большие по-прежнему возможны, как бы необычны.
Предыдущий метод (псевдокод-иш)
-
Loop from min to max
-
Closer to average numbers are added to the list more times
-
A random element is selected from the list
добавляются элементы, более близкие к средним больше, поэтому они будут, скорее всего, выбраны.
Хорошо, так что, например, бросать кучу конфет в сумку и выбирать случайную. Да, медленно. Что вы думаете об этом?
Иллюстрация: (Не совсем точно, но вы видите идею)
ПРИМЕЧАНИЕ. Многие люди предложили кривую колокола, но вопрос заключается в том, как изменить пик кривой в пользу одной стороны в этом смысле.