Wczytywanie najwyzszych liczb.

0

Witam.
Mam pytanie, jak spośród 4 wygenerowanych losowo liczb (od 1 do 6) zsumować i wyczytać 3 najwyższe a najniższą z nich odrzucić?

3
int sum = new Random().ints(1, 6).limit(4).sorted().skip(1).sum();
1

Zaciekawił mnie rozkład takich sum, napisałem programik liczący i wyświetlający rozkład

        HashMap<Integer,Integer> counters = new HashMap<Integer,Integer>();
        for(int i=3;i<=18;i++)
        {
            counters.put(i,0);
        }
        for(int i=0;i<100000;i++)
        {
            int sum = new Random().ints(1, 6).limit(4).sorted().skip(1).sum();
            counters.put(sum,counters.get(sum) + 1);
        }
        for(int key: counters.keySet())
        {
            System.out.println(key + "  " + counters.get(key));
        }

Wyniki były nieprawdopodobne:

3  170
4  639
...
16  0
17  0
18  0

Wytłumaczenie takiego wyniku - potwierdzone przez rzut oka na dokumentację - jest takie: upperBounds dla metody ints jest exclusive.

int sum = new Random().ints(1, 7).limit(4).sorted().skip(1).sum();

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