Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128

Заполнить массив числами в процентном соотношении

05.12.2019, 22:55. Показов 2446. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Есть 3 числа: 1, 2 и 3. Они попадаются с разным шансом.

1 - 52.463%
2 - 31.417%
3 - 16.12%

Заполнить массив из 100 элементов исходя из шансов на выпадение числа. Помогите пожалуйста.
*Переделал немного

Добавлено через 1 час 15 минут
Попробую отталкиваться от
Python
1
2
a = random.uniform(1, 100)
print(round(a, 3))
Добавлено через 29 минут
Попробовал, но чую, что-то не то. Те шансы, которые выходят за рамки я сделал, чтобы добавлялись нули.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import random
 
a1 = 1 # 1%
a2 = 2 # 17.241%
a3 = 3 # 32.258%
a4 = 4 # 14.705%
a5 = 5 # 17.543%
a6 = 6 # 11.494%
a7 = 7 # 11.494%
a8 = 8 # 1.25%
a9 = 9 # 1%
a10 = 10 # 1%
 
arr = []
 
for i in range(10000):
    rnd = round(random.uniform(1, 100), 3)
    
    if rnd <= 32.258:
        arr.append(a3)
 
    if rnd > 32.258 and rnd <= 49.801:
        arr.append(a5)
        
    if rnd > 49.801 and rnd <= 67.042:
        arr.append(a2)
        
    if rnd > 67.042 and rnd <= 81.747:
        arr.append(a4)
        
    if rnd > 81.747 and rnd <= 93.241:
        arr.append(a6)
        
    if rnd > 93.241 and rnd <= 94.491:
        arr.append(a8)
        
    if rnd > 94.491 and rnd <= 95.491:
        arr.append(a9)
 
    if rnd > 95.491 and rnd <= 96.491:
        arr.append(a10)
 
    if rnd > 95.491 and rnd <= 97.491:
        arr.append(a1)
 
print(arr)
Добавлено через 8 минут
Надо убрать else

Добавлено через 20 минут
Код работает правильно.
Мог бы кто-то хороший, оптимизировать его? Сделать короче.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2019, 22:55
Ответы с готовыми решениями:

Сделать так, чтобы атомы в этой программе перемешивались в определённом процентном соотношении?
Доброе утро! Как сделать так, чтобы атомы в этой программе перемешивались в определённом процентном соотношении? import re,...

Вывести количество гласных и согласных букв в процентном соотношении(программа есть, надо изменить)
word = input() glasnye = 0 soglasnye = 0 for i in word: letter = i.lower() if letter == &quot;a&quot; or letter == &quot;e&quot; or\ ...

Rand() в процентном соотношении
Добрый день. У меня есть две строчки, в будущем не исключено что будет больше. так вот я хотел спросить как можно сделать rand в процентном...

3
2 / 1 / 1
Регистрация: 16.08.2019
Сообщений: 48
06.12.2019, 00:27
yellyex, Для этого есть модуль numpy. Установи его через команду "pip install numpy"

Вот твой оптимизированный код:
Python
1
2
3
4
5
import numpy as np
 
a = [1, 2, 3]
b = np.random.choice(a, 100, p=[0.52463, 0.31417, 0.1612])
print(b)
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
06.12.2019, 01:08  [ТС]
FroDK, спасибо.

Не подскажите, почему у меня размер массива меняется каждый раз? Я же выставил его 100.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import numpy as np
import random
 
a1 = 1
a2 = 2
a3 = 3
a4 = 4
a5 = 5
a6 = 6
a7 = 7
a8 = 8
a9 = 9
a10 = 10 
 
arr = []
 
for i in range(100):
    rnd = round(random.uniform(1, 100), 3)
    
    if rnd <= 32.258:
        arr.append(a3)
 
    if rnd > 32.258 and rnd <= 49.801:
        arr.append(a5)
        
    if rnd > 49.801 and rnd <= 67.042:
        arr.append(a2)
        
    if rnd > 67.042 and rnd <= 81.747:
        arr.append(a4)
        
    if rnd > 81.747 and rnd <= 93.241:
        arr.append(a6)
        
    if rnd > 93.241 and rnd <= 94.491:
        arr.append(a8)
        
    if rnd > 94.491 and rnd <= 95.491:
        arr.append(a9)
 
    if rnd > 95.491 and rnd <= 96.491:
        arr.append(a10)
 
    if rnd > 95.491 and rnd <= 97.491:
        arr.append(a1)
 
print(len(arr))
Добавлено через 6 минут
Кажется понял. Он заполняет нужными мне значениями, которых может быть не 100.

Добавлено через 2 минуты
Но как их может быть больше 100 я не понимаю.
0
2 / 1 / 1
Регистрация: 16.08.2019
Сообщений: 48
06.12.2019, 01:22
yellyex, У тебя ошибка в 44 строчке где 95.491, а должно быть 96.491, т.к. у тебя предыдущее значение такое же.

И вместо конструкции:
Python
1
if rnd > 95.491 and rnd <= 97.491
Используй:
Python
1
if 95.491 < rnd <= 97.491
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2019, 01:22
Помогаю со студенческими работами здесь

Инициализация массива 0 и 1 в процентном соотношении
Доброго времени суток! Прошу помощи, самому ничего в голову не приходит, нагуглить ничего не получилось. Суть вопроса: необходимо...

Радиус, бордюр, в процентном соотношении
position: fixed; top: 10px; left: 10px; height: 80px; width: 80px; background: #ffffff; border-radius:...

Как отобразить в процентном соотношении
как подсчитать количество оценок определённого балла в процентном соотношении как на рисунке ? на сколько я понял там через...

Идентичность слов в процентном соотношении
Как можно проверить два слова на идентичность?? на совпадение их символов, процентов на 60..?

Разбить List на части в процентном соотношении
Всем привет! Ребзя, есть List состоящий из строк. Как его можно разбить в процентном соотношении на части? Скажем, пользователь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru