Генератор случайных чисел, смещенный к числам в середине диапазона, Java, libGDX

Я разрабатываю игру в libGDX, в которой выпадают камни разных размеров, чтобы пользователь мог увернуться.

Мой вопрос: Как я могу создать метод, который принимает низкое и высокое значение типа int и возвращает случайное число. Однако я хочу, чтобы это случайное число было смещено к середине диапазона (аналогично нормальному распределению).

Я хотел бы, чтобы метод выглядел примерно так: public int randBiasInt(int low, int high) { }

1 ответ

Решение

Что-то вроде этого должно работать...

public int getBiasedInt(int min, int max) {
    int rand = Math.random() * max;
    while (rand < min) {
        rand = Math.random();
    }
    int mid = (max / 2) - (min / 2);
    int halfmid = mid / 2;
    if (rand > mid) {
        rand -= Math.random() * halfmid;
    } else {
        rand += Math.random() * halfmid;
    }
    return rand;
}

Не самая красивая, я знаю. Но это должно быть приемлемо для того, что вы хотите...

Другие вопросы по тегам