2014-09-26 2 views
2

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

Я разрабатываю игру, где бонусы для здоровья могут иметь случайное значение здоровья между минимумом и макс (от 5 до 100). Я хочу сделать так, чтобы бонусы для здоровья повышались слишком часто.

Как бы я случайно генерировал значение между min и max, чтобы следовать экспоненциальной модели?

+0

Непросто. Вы можете попросить MathSE получить уравнение/алгоритм, а затем прийти сюда, если вам нужна помощь в его кодировании. – BradleyDotNET

+0

Можете ли вы определить модель? Вы говорите экспоненциально. Можете ли вы точно определить, что вы подразумеваете под этим. –

+0

@DavidHeffernan Если бы вы нарисовали x^1,75 на графике, то я бы хотел, чтобы кривая вероятности выглядела. –

ответ

3

Почему бы не принять случайные значения между 5 и 100, а после этого несколько это случайным образом между 1-10 разделить на 10. В этом случае вы будете иметь в действительно редких случаях высокий hp-бар.

Пример Случайный 5-100 занимает 60, случайное 1-10 принимает 5.

60 * 5/10 = 30.

Надеюсь, это сработает для вас. В этом случае у вас будет hp более 90 с вероятностью чуть более 1%. Если моя математика правильная для 80-90 составляет ~ 4%, то для 70-80 составляет ~ 9%.

static void Main(string[] args) 
    { 
     Random rnd = new Random(); 
     int p = rnd.Next(5, 100); 
     int q = rnd.Next(1, 10); 

     int hp = p * q/10; 

     if (hp < 5) 
      hp = 5; 

     Console.WriteLine(hp); 

    } 
+0

@ ErenErsönmez Если значение меньше <5, возьмите 5 ... Вы никогда не писали, если статут. Таким образом, если значение не int, пожалуйста, преобразуйте его в int. В любом случае спасибо за проголосовать! – mybirthname

+0

Я не говорю, что вы заслуживаете понижения, но было бы неплохо увидеть некоторые доказательства того, что это работает. Уже есть уже один угловой случай, и могут быть и другие. Это не случай, когда можно написать оператор if, его понимание базовой математики достаточно для точного уравнения. – BradleyDotNET

+0

@BradleyDotNET вот код, вы можете попробовать. – mybirthname

Смежные вопросы