Генерация 1000 случайных чисел от 13 до 100

1

Я пытаюсь создать 1000 случайных чисел от 13 до 100. До сих пор он генерировал только 75% того, что я хочу, в тысячу раз. Вот что у меня есть до сих пор:

Random rand = new Random();
for (int j = 0; j < 1000; j++)
{
    int pick = rand.nextInt((87) + 13);
    pick++;
}

Почему он не работает?

  • 5
    rand.nextInt((87)+13) совпадает с rand.nextInt(100) ...
  • 1
    что-то выглядит странно в этом коде nextInt((87)+13)
Показать ещё 3 комментария
Теги:
random

4 ответа

4

Обратите внимание на nextInt(), охватывающий 0 включительно и заданное значение исключительно! Таким образом, это должно быть rand.nextInt(88) чтобы сделать наивысший int сгенерированным 87. Вот что вы хотите:

Random rand = new Random();
for (int j = 0; j<1000; j++)
{
    int pick = rand.nextInt(88)+13;
}
  • 0
    @ZouZou да, извини, моя ошибка. Но все остальные случайные решения (87) +13 не покроют 100, верно ?!
  • 1
    Да, вам нужно позвонить nextInt(88) .
Показать ещё 1 комментарий
1

rand.nextInt(88) + 13; должен давать вам цифры от 13 до 100, и вы просто помещаете их в свою петлю.

  • 1
    это не верно. Должно быть .nextInt(88)
0

Линия:

До сих пор он только генерировал 75% того, что я хочу многократно в тысячу раз

На самом деле это не так. Возможно, это проблема с посевкой. Обязательно всегда повторно забирайте случайное число, используя время.

Но я согласен с Абдулом, вам нужно взять +13 из этой круглой скобки:

rand.nextInt(87) + 13;

Поскольку rand.nextInt((87) + 13) совпадает с rand.nextInt((67) + 23) как rand.nextInt((1) + 99)

Но если вы хотите больше "истинной" случайности, посмотрите на то, что называется buzzhash (хотя это для хэширования, но может быть изменено для числа)

  • 0
    взял 13 из скобок и ничего не изменилось
0

Я использую это в своих кодах:

public static int randomInteger(int min, int max)
{
    java.security.SecureRandom rand = new java.security.SecureRandom();

    //get bounded [0, max) from nextInt()
    int randomNum = rand.nextInt(max) + min;

    return randomNum;
}

value = randomInteger(13,100); //13..99
value = randomInteger(13,101); //13..100

Ещё вопросы

Сообщество Overcoder
Наверх
Меню