 |

21.05.2023, 17:58
|
|
Познающий
Регистрация: 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...
На подобии:
Числа в пачках не должны повторятся.
|
|
|

22.05.2023, 10:33
|
|
Флудер
Регистрация: 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}"
)
|
|
|

24.05.2023, 01:52
|
|
Познающий
Регистрация: 16.01.2021
Сообщений: 63
С нами:
2802433
Репутация:
13
|
|
Не совсем то, нужно чтобы из всех 50 перебирались варианты максимально схожие к 0.59452. В твоем варианте, у тебя все суммируется и делится на 10. Я пробовал сделать соотношение в процентах, но там все выводится максимально криво
|
|
|

24.05.2023, 02:00
|
|
Флудер
Регистрация: 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
)
|
|
|

24.05.2023, 02:15
|
|
Познающий
Регистрация: 16.01.2021
Сообщений: 63
С нами:
2802433
Репутация:
13
|
|
Мда, 50 числе маловато для более схожего среднего числа. Подумаю еще короче
Допустим увеличим кол-во цифт, не 50, а 500, а в рандоме от 0.45 до 0.9. Думаю более менее будут схожие
среднии значения
|
|
|

27.05.2023, 21:09
|
|
Участник форума
Регистрация: 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
}
]
|
|
|

28.05.2023, 14:35
|
|
Новичок
Регистрация: 24.05.2023
Сообщений: 12
С нами:
1566769
Репутация:
8
|
|
собрался крафтить шмотки в кс с заранее известным флоатом? купи подписку готовую, зачем ебаться самому?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|