Как сделать логическую операцию ИЛИ в сценариях оболочки

Если вы хотите, чтобы равномерно распределенная псевдослучайность длилась в диапазоне [0, m), попробуйте использовать модуль-модуль и метод абсолютного значения в сочетании с методом nextLong(), как показано ниже:

Math.abs(rand.nextLong()) % m;

Где rand - ваш случайный объект.

Оператор modulo делит два числа и выводит оставшуюся часть этих чисел. Например, 3 % 2 является 1, поскольку остаток от 3 и 2 равен 1.

Поскольку nextLong() порождает равномерно распределенное псевдослучайное длинное число в диапазоне [- (2 ^ 48), 2 ^ 48) (или где-то в этом диапазоне), вам нужно будет принять его абсолютное значение. Если вы этого не сделаете, то по модулю метода nextLong() 50% вероятность возврата отрицательного значения, которое находится вне диапазона [0, m).

То, что вы изначально запросили была равномерно распределенной псевдослучайной длиной в диапазоне [0,100]. Следующий код делает это:

Math.abs(rand.nextLong()) % 100;
542
задан jww 22 April 2019 в 07:20
поделиться