HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 21.05.2023, 17:58
Cyprien Lortie
Познающий
Регистрация: 16.01.2021
Сообщений: 63
С нами: 2802433

Репутация: 13
По умолчанию

Есть 50 чисел (через рандом - от 0.59-0.61) на подобии:

Числа:





Код:
0.59256458282471
0.59494507312775
0.59804075956345
0.59178483486176
0.59435659646988
0.59737747907639
0.59721547365189
0.59774696826935
0.59721547365189
0.59774696826935
0.59022492170334
0.59429180622101
0.59855586290359
0.59084403514862
0.5985199213028
0.59707295894623
0.59707295894623
0.5908744931221
0.5987184047699
0.59707295894623
0.59328609704971
0.59328609704971
0.59121304750443
0.59278571605682
0.59867084026337
0.59260100126266
0.59821671247482
0.59078377485275
0.59078377485275
0.59180921316147
0.59180921316147
0.59642028808594
0.59914666414261
0.59603440761566
0.5968542098999
0.59052741527557
0.59648090600967
0.59815311431885
0.59577709436417
0.59650999307632
0.59081995487213
0.59054177999496
0.5933341383934
0.59356135129929
0.59101998806
0.59448885917664
0.59649211168289
0.59944379329681
0.59951776266098
0.59410744905472


Как создать 5 пачек по 10 чисел, чтобы общее среднее было приближено к 0.59452...

На подобии:

Цитата:
Сообщение от Спойлер  




Числа в пачках не должны повторятся.
 
Ответить с цитированием

  #2  
Старый 22.05.2023, 10:33
chromiusj
Флудер
Регистрация: 10.08.2021
Сообщений: 6,010
С нами: 2505538

Репутация: 133


По умолчанию

мэйби так

Python:





Код:
import
random

target_mean
=
0.59452
# нужное сред знач
num_batches
=
5
numbers_per_batch
=
10
batches
=
[
]
for
_
in
range
(
num_batches
)
:
batch
=
random
.
sample
(
[
number
for
number
in
(
random
.
uniform
(
0.59
,
0.61
)
for
_
in
range
(
numbers_per_batch
)
)
]
,
numbers_per_batch
)
batches
.
append
(
batch
)
for
i
,
batch
in
enumerate
(
batches
)
:
batch_mean
=
sum
(
batch
)
/
numbers_per_batch
print
(
f"Пачка{i+1}:{batch}"
)
print
(
f"Среднее значение:{batch_mean:.5f}"
)
all_numbers
=
[
number
for
batch
in
batches
for
number
in
batch
]
all_mean
=
sum
(
all_numbers
)
/
(
num_batches
*
numbers_per_batch
)
print
(
f"\nОбщее среднее значение:{all_mean:.5f}"
)
 
Ответить с цитированием

  #3  
Старый 24.05.2023, 01:52
Cyprien Lortie
Познающий
Регистрация: 16.01.2021
Сообщений: 63
С нами: 2802433

Репутация: 13
По умолчанию

Не совсем то, нужно чтобы из всех 50 перебирались варианты максимально схожие к 0.59452. В твоем варианте, у тебя все суммируется и делится на 10. Я пробовал сделать соотношение в процентах, но там все выводится максимально криво
 
Ответить с цитированием

  #4  
Старый 24.05.2023, 02:00
chromiusj
Флудер
Регистрация: 10.08.2021
Сообщений: 6,010
С нами: 2505538

Репутация: 133


По умолчанию

можно так попробовать в принципе

Python:





[CODE]
import
itertools
import
random
def
find_combination
(
numbers
,
target_mean
,
batch_size
,
num_batches
)
:
closest_mean
=
float
(
'inf'
)
best_combination
=
None
combinations
=
itertools
.
combinations
(
numbers
,
batch_size
*
num_batches
)
for
combination
in
combinations
:
batches
=
[
combination
[
i
:
i
+
batch_size
]
for
i
in
range
(
0
,
len
(
combination
)
,
batch_size
)
]
if
len
(
set
(
number
for
batch
in
batches
for
number
in
batch
)
)
!=
len
(
numbers
)
:
continue
batch_means
=
[
sum
(
batch
)
/
len
(
batch
)
for
batch
in
batches
]
mean
=
sum
(
batch_means
)
/
len
(
batch_means
)
if
abs
(
mean
-
target_mean
)

 
Ответить с цитированием

  #5  
Старый 24.05.2023, 02:15
Cyprien Lortie
Познающий
Регистрация: 16.01.2021
Сообщений: 63
С нами: 2802433

Репутация: 13
По умолчанию

Мда, 50 числе маловато для более схожего среднего числа. Подумаю еще короче

Допустим увеличим кол-во цифт, не 50, а 500, а в рандоме от 0.45 до 0.9. Думаю более менее будут схожие

среднии значения
 
Ответить с цитированием

  #6  
Старый 27.05.2023, 21:09
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Нужно число, приближенное к 0.59452 — сократи диапазон переменных low и high. (я сделал это за тебя)

Python:





[CODE]
import
random

low
=
0.59451
high
=
0.59453
packs_count
=
5
#Кол-во наборов
packs_len
=
10
#Кол-во чисел в наборах
arr_of_packs
=
[
{
"Набор"
:
[
]
,
"Среднее"
:
None
}
for
i
in
range
(
packs_count
)
]
def
get_medium
(
numbers
:
list
)
-
>
float
:
return
sum
(
numbers
)
/
len
(
numbers
)
def
same_number_exists
(
num
:
float
)
-
>
bool
:
for
pack
in
arr_of_packs
:
for
number
in
pack
[
"Набор"
]
:
if
number
==
num
:
return
True
return
False
def
main
(
)
-
>
None
:
for
pack
in
arr_of_packs
:
while
len
(
pack
[
"Набор"
]
)



JSON:





Код:
[
{
'Набор'
:
[
0.59452520220402
,
0.5945219346742064
,
0.5945239849441804
,
0.5945103163662672
,
0.5945210986481824
,
0.5945114726768601
,
0.5945262848796486
,
0.5945278647918683
,
0.5945235021782627
,
0.5945193742745849
]
,
'Среднее'
:
0.5945211035638082
}
,
{
'Набор'
:
[
0.5945240556983404
,
0.5945137718941468
,
0.5945122941599897
,
0.5945216126317907
,
0.59452544383679
,
0.5945250517578625
,
0.5945214341696814
,
0.5945155538840273
,
0.5945171641873448
,
0.59452555374078
]
,
'Среднее'
:
0.5945201935960753
}
,
{
'Набор'
:
[
0.5945137718816479
,
0.5945236173240422
,
0.594511161567528
,
0.5945208281928147
,
0.594522490115567
,
0.5945209929114992
,
0.5945193121482177
,
0.5945284714976264
,
0.5945104964559407
,
0.5945260185276486
]
,
'Среднее'
:
0.5945197160622533
}
,
{
'Набор'
:
[
0.5945246832697737
,
0.5945124443899157
,
0.5945272940188567
,
0.594512957197822
,
0.5945250230686927
,
0.5945216805643614
,
0.5945125045984773
,
0.5945269420601209
,
0.5945291632498761
,
0.5945261877928855
]
,
'Среднее'
:
0.5945218880210782
}
,
{
'Набор'
:
[
0.5945131859493903
,
0.5945210901150354
,
0.5945211643579503
,
0.5945115142190934
,
0.594519834856812
,
0.5945174815749449
,
0.594512097472952
,
0.5945271880099422
,
0.5945245926866556
,
0.594516279291905
]
,
'Среднее'
:
0.5945184428534682
}
]
 
Ответить с цитированием

  #7  
Старый 28.05.2023, 14:35
Digger Code
Новичок
Регистрация: 24.05.2023
Сообщений: 12
С нами: 1566769

Репутация: 8
По умолчанию

собрался крафтить шмотки в кс с заранее известным флоатом? купи подписку готовую, зачем ебаться самому?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.