Próbuję utworzyć skrypt, który losowo podzieli wartość 4 na 12 różnych zmiennych. Nie mogę wymyślić dobrego sposobu, aby zrobić to właściwie. Myślałem o randomizowaniu liczb tak, aby były bliskie 0,33 (1/12 z 4), ale często prowadziło to do zbyt małej liczby ostatnich liczb. Czy ktoś próbował czegoś takiego wcześniej lub miał jakieś świetne pomysły na to, jak zrobić to tak przypadkowo i równomiernie, jak to tylko możliwe?Dzielenie liczby na przypadkowe, nierówne części
Odpowiedz
Generowanie 12 liczb losowych z ulubionego generatora liczb losowych, nazywając je r1..r12
.
Dodaj je wszystkie, zadzwoń pod numer sum
.
Twoja pierwsza losowa część z 4
to (r1/sum)*4
. Reszta powinna być oczywista.
Generowanie dowolnej liczby losowej większej niż 1 i po przeskalowaniu do wymaganej sumy.
przykład:
- żądanej sumy: 4
- Liczby losowe: 1 2 3 4 5 6 7 8 9 10 11 12
- Suma = 78
- przeskalowanych liczby:
1 przeskalowany do (1 * 4)/78
2 przeskalowywane (2 * 4)/78
...
12 przeskalowywane (12 *), 4/78
następujący algorytm zapewnia równomiernie rozmieszczone przegrody, przy założeniu, że możliwe jest generowanie równomiernie rozłożonych liczb losowych w ciągłym zakresie (lub, co najmniej, w dyskretnym zakresie o wystarczająco wielu możliwych wartościach, że prawdopodobieństwo powielenia jest znikome).
celu wytworzenia partycji t
do k
wartości:
Generowanie
k-1
równomiernie rozłożonych wartości w zakresie[0, t]
.Posortuj je i dodaj
0
na początku ina końcu.Użyj sąsiednich różnic jako partycji.
- 1. dzielenie macierzy matlab na kilka równych części
- 2. C#: Dzielenie tablicy na n części
- 3. Dzielenie liczby w R
- 4. Dzielenie liczby całkowitej na jej oddzielne cyfry
- 5. Dzielenie liczby całkowitej w Pythonie?
- 6. Dzielenie plików conftest.py na kilka mniejszych części conftest podobny
- 7. Czy LINQ natywnie obsługuje dzielenie kolekcji na dwie części?
- 8. pobranie części ułamkowej liczby dziesiętnej
- 9. JavaScript dziwne przypadkowe zachowanie
- 10. Dzielenie łańcucha na pary
- 11. Dzielenie liczby przez instancje mojej klasy w języku Python
- 12. Dlaczego dzielenie liczby zmiennoprzecinkowej przez liczbę całkowitą zwraca wartość 0,0?
- 13. Dzielenie liczby całkowitej i znajdowanie największej sumy C++
- 14. KDTree Dzielenie
- 15. Dzielenie ścieżki WPFGeometria na "płytki"
- 16. Dzielenie RelativeLayout na dwie połowy
- 17. Podziel listę na części
- 18. Przejście na cztery części
- 19. delegowania na części prywatnych
- 20. Kotlin interfejs klasy Java: przypadkowe nadpisanie
- 21. Co to jest przypadkowe podstawienie makra?
- 22. Dzielenie liczb całkowitych
- 23. Podziel ciąg na dwie części
- 24. Ukryj svg części na wydruku
- 25. Odtwórz wideo na części ekranu
- 26. Ubarwienie części tytułu na wykresie
- 27. bilansowania nierówne zestawu danych z generatora Keras obrazu
- 28. Dzielenie dataframe w równych częściach
- 29. Dzielenie ciąg na wielu miejscach w java
- 30. Dzielenie bieżącego miesiąca na tygodnie w php
To było genialne! Wielkie dzięki! – Tom
Należy zauważyć, że to rozwiązanie nie generuje zestawów liczb, które są równomiernie rozmieszczone w logiczny sposób, ale jest to rozwiązanie, które większość ludzi wybiera, ponieważ nie rozumie, dlaczego nie wytwarza czegoś naprawdę jednolitego. –
@woodchips: byłoby pomocne dostarczenie pewnych uzasadnień dla tej krytyki (choć jest prawidłowa), a jeszcze bardziej pomocna jest odpowiedź, która generuje jednolicie rozproszone partycje.Próbowałem zrobić to drugie, chociaż nie jestem pewien, czy to też jest poprawne. – rici