Cyprien Lortie
21.05.2023, 17:58
Есть 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...
На подобии:
https://forum.antichat.xyz/attachments/28314059/img_cd8fd0c625.png
Числа в пачках не должны повторятся.
chromiusj
22.05.2023, 10:33
мэйби так
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}"
)
Cyprien Lortie
24.05.2023, 01:52
Не совсем то, нужно чтобы из всех 50 перебирались варианты максимально схожие к 0.59452. В твоем варианте, у тебя все суммируется и делится на 10. Я пробовал сделать соотношение в процентах, но там все выводится максимально криво
chromiusj
24.05.2023, 02:00
можно так попробовать в принципе
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
)
Cyprien Lortie
24.05.2023, 02:15
Мда, 50 числе маловато для более схожего среднего числа. Подумаю еще короче
Допустим увеличим кол-во цифт, не 50, а 500, а в рандоме от 0.45 до 0.9. Думаю более менее будут схожие
среднии значения
pomidorq
27.05.2023, 21:09
Нужно число, приближенное к 0.59452 — сократи диапазон переменных low и high. (я сделал это за тебя)
Python:
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:
[CODE]
[
{
'Набор'
:
[
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
}
]
Digger Code
28.05.2023, 14:35
собрался крафтить шмотки в кс с заранее известным флоатом? купи подписку готовую, зачем ебаться самому?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot