Как масштабировать псевдослучайные числа до определенного диапазона?
Как бы я масштабировал случайные числа, чтобы сказать 1-10 без потери случайности?
Я знаю, просто использовать% 10 не очень хорошая идея.
И, кроме того, мне нужно начальное значение, чтобы я мог проверить на определенных числах,
но я не понял, какое значение должно иметь это семя, и я не знаю, как оно влияет на последовательность.
Есть ли разница, высокая или низкая?
заранее спасибо.
2 ответа
import java.util.Random;
Random random = new Random( yourSeed );
int randomInt = random.nextInt(10) + 1 ;
seed
не имеет другой цели, кроме как дать PRNG
отправная точка. Это чисто произвольно и не повлияет на распределение случайных чисел.
nextGaussian()
отличается тем, что возвращает числа с плавающей запятой, распределенные по кривой колокола.
Обычно при попытке получить случайное значение вы будете использовать что-то вроде этого:
public int getRandom( int min, int max )
{
return (int) Math.round( Math.random() % (max - min) + min );
}
Или, как я только что вспомнил из ответа Stavr00, используйте одну из встроенных функций из java.util.Random