• Генерировать числа с заданной вероятностью?

    Maksim_64
    @Maksim_64
    Data Analyst
    приведу пример кода на python с использованием библиотеки numpy
    import numpy as np
    sample_space = [0,1,2,3,4,5,6]
    probabilities = [0.3,0.2,0.05,0.05,0.1,0.15,0.15]
    n = 20
    result = np.random.choice(sample_space,size=n,p=probabilities)
    print(result)

    sample_space - лист откуда будет производится выборка
    probabilities - лист соответствующих вероятностей (0 с вероятностью 0.3, 1 с вероятностью 0.2, и.т.д) вероятности я взял свои, вы поставите свои главное чтобы вероятности в сумме были 1.
    n - количество сгенерированных чисел для примера я взял 20, вы зададите сколько ва нужно.
    функция choice также имеет параметр replace по умолчанию установленный в True он регулирует может ли ранее выбранный элемент, быть выбранном снова, в нашем случае могут ли быть повторения при выборке из sample_space (по умолчанию может).
    Насчет нормирования вероятностей, такое возможно только если n=2, или если есть дополнительная информация позволяющая создать систему уравнений. В вашем случае это невозможно например
    возьмем нашу дистрибуцию мы имеем 0 с вероятностью 0.3, мы меняем ее 0.2, у нас будет существовать бесконечное количество сценариев как мы можем раскидать 0.1 на остальные 6 элементов. Уникального решения не существует.
    Ответ написан
  • Что не так с кодом на Pyhton?

    Maksim_64
    @Maksim_64
    Data Analyst
    В принципе по логике все верно, единственно в функции print нужно задать параметр end=' ', что бы вывод был в одну строку через пробел.
    n = int(input("Введите длину массива: "))
    mas = input("Введите элементы массива через пробел: ").split()
    for i in range(0,n,2):
        print(mas[i],end=' ')
    Ответ написан