Losowanie liczb, których suma wynosi tyle, ile górna granica przedziału

0

Witam, piszę pewien program. Jedna z jego funkcji miałaby wielokrotnie losować wartości całkowite z określonego przedziału (np. 1-15000), które po zsumowaniu powinny wynosić górną granicę przedziału.

Nie wiem czy to co napisałem jest zrozumiałe, więc podam na przykładzie:

  1. Mamy przedział 1-10
  2. Program losuje liczby** [1, 3, 5, 1]** lub** [2, 4, 4]** - ich suma zawsze wynosi 10

Da się coś takiego stworzyć? Nie potrzebuję gotowego kodu (choć takowym nie pogardzę), bardziej nakierowania w którą stronę powinienem myśleć :D

Sam program planuję pisać w JS.

Z góry dzięki!

0

No to wersja bezmyślna:
Losujesz sobie liczbę, sprawdzasz czy po dodaniu do sumy (początkowo = 0) jest mniejsza niż górna granica, jeśli tak to ją zostawiasz, jeśli nie to losujesz kolejną.

1

Może najpierw losuj liczbę z przedziału 1-15000, kolejną z 1-15000 minus pierwsza wylosowana itd.

1

Oczekiwany wynik dzielisz przez ilość liczb jaką chcesz wylosować, żeby dostać sufit którego nie mogą przekroczyć pojedyńcze losy, losujesz, wyniki sumujesz i sprawdzasz ile Ci brakuje do oczekiwanej liczby i ostatnią "losową" liczbę wyliczasz z różnicy. Problem z tym jest taki że pojedyńcze liczby nigdy nie przekroczą wartości odgórnej ustalonej przy dzieleniu, ale można się z tym jeszcze pobawić żeby dane sufity podzielić też losowo, początkową liczbę też można wylosować. Takie chłopskie rozwiązanie, może ktoś podsunie bardziej 'matematyczną' metodę

0

Dzięki! Odpowiedzi Matthi i slayer9 mi pomogły :D

0

Brakuje dwóch ważnych informacji:

  • skąd brać ilość składników (w przykładzie raz jest 3, a raz 4),
  • czy jest ograniczenie na wielkość losowanych liczb.

1 użytkowników online, w tym zalogowanych: 0, gości: 1