2016-11-20 2 views
0

Я пытаюсь написать программу, которая требует от меня генератора случайного числа.Случайное число, которое предпочитает диапазон

Мне также нужно сделать так, чтобы переменная вероятность выбора диапазона.

В этом случае я буду генерировать между 1-10 и диапазоном с процентным шансом 7-10.

Как мне это сделать? Могу ли я получить формулу или что-то в этом роде?

+1

Какой язык программирования вы используете? У Python есть случайная библиотека, и вы можете использовать random.randint (1,10) для первой части вашего вопроса. Что вы имеете в виду, когда говорите «диапазон с процентным шансом 7-10»? –

+0

Можете ли вы показать, что вы пробовали до сих пор? И какой язык вы используете? –

+0

Вы это проясните? –

ответ

1

Так что, если я понимаю ваш вопрос, вы хотите два диапазона чисел и переменную определенную вероятность того, что один диапазон будет выбран. Это можно описать математически как функцию плотности вероятности (PDF), которая в этом случае также примет вашу «случайную» переменную в качестве аргумента. Если, например, ваш 7-10 диапазон, более вероятно, чем остальные 1-10 диапазона, PDF может выглядеть примерно так:

Sample Probability Density Function

One PDF, такие как плоские распределения может быть преобразован в другой через функцию преобразования, которая позволит вам генерировать равномерно случайное число и преобразовывать его в собственную функцию плотности. См. Здесь для строгой математики: http://www.stat.cmu.edu/~shyun/probclass16/transformations.pdf

Но поскольку вы пишете программу, а не математический тезис, я предлагаю, чтобы самым простым способом было просто сгенерировать два случайных числа. Первый определяет, какой диапазон использовать, а второй генерирует число в пределах выбранного вами диапазона. Имейте в виду, что если ваши диапазоны перекрываются (очевидно, 1-10 и 7-10), то область перекрытия будет еще более вероятной, поэтому вы, вероятно, захотите сделать свои диапазоны эксклюзивными, чтобы вы могли более легко управлять вероятностями. Вы не сказали, какой язык вы используете, но вот простой пример в Python:

import random 

range_chance = 30 #30 percent change of the 7-10 range 

if random.uniform(0,100) < range_chance: 
    print(random.uniform(7,10)) 
else: 
    print(random.uniform(1,7)) #1-7 so that there is no overlapping region 
+0

Я полагаю, что я должен был изменить переменную range_chance больше 50, так как на вашей иллюстрации диапазон «предпочтительнее». Но ты получил идею. –

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