Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.200.35] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте
Как выглядит в яве команда Randomize чтобы при использовании Функции nextInt(3) каждый раз новое число выдавалось? |
Сообщ.
#2
,
|
|
|
Java_starter, сама функция nextInt() модифицирует внутри себя "затравку" генератора, что аналогично randomize
|
Сообщ.
#3
,
|
|
|
А что, при nextInt(3) у вас каждый раз одинаковые числа выдаются?
|
Сообщ.
#4
,
|
|
|
new Random().nextInt ( 100 ) Такой вариант будет каждый раз давать новое значение между 0 и 100 (включая 0 и НЕ включая 100) Соответственно вместо 100 можете указать любое другое целое... Работает как часы |
Сообщ.
#5
,
|
|
|
Всё очень просто
Random ran=new Random(); int n=ran.nextInt(3); Добавлено Ну если между 0 и 100 (включая 0 и НЕ включая 100) Random ran=new Random(); int n=ran.nextInt(100); |
Сообщ.
#6
,
|
|
|
я так уже писал как мне рекомендуют, но оно так не работает
вот пример: public void rand() { for (int i=1; i<20; ++i) { System.out.print(_random.nextInt(3)); } } выдаёт 1022200002112221002 |
Сообщ.
#7
,
|
|
|
Java_starter,
Ну так а что не правильно? System.out.print - выводит символы один за одним, у вас вывелось 19 рендомных чисел от 0 до 2 включительно. Используйте System.out.println или сделайте System.out.print(_random.nextInt(3) + " "); , что бы видеть числа отдельно. Запустив 2 раза программу, получите разные числа. |
Сообщ.
#8
,
|
|
|
мне нужно чтобы каждое новое число не было равно предидущему
|
Сообщ.
#9
,
|
|
|
Java_starter,
Тогда как минимум надо сохранять состояние элемента i-1 и потом сравнивать его и выполнять над ним какие-то дейтсвия. Random random = new Random(); int value = -1; int next = 0; for (int i = 1; i < 20; ++i) { next = random.nextInt(3); if (value == next){ next = (next + 1) % 3; } System.out.print(next); value = next; } Можно как-то так, алгоритм можете придумать свой |
Сообщ.
#10
,
|
|
|
а что в яве это не встроено?
вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число. ну ладно, спасибо за совет, буду думать над алгоритмом. |
Сообщ.
#11
,
|
|
|
Java_starter
Ну вообще-то суть рендомного числа в том, что оно рендомно и не зависит от каких то требований...а тут получается что число псевдорендомно, так как оно не может принимать 33% от допустимых значений. |
Сообщ.
#12
,
|
|
|
Цитата Java_starter @ а что в яве это не встроено? вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число. ну ладно, спасибо за совет, буду думать над алгоритмом. Я могу предположить, что вы имеете в виду друг за другом одно и то же число, а не впринципе одинаковые вообще исключаются? Ибо, как мне помнится, в паскале могут, скажем, из 10 результатов быть пару одинаковых, например. Вообщем, это уже зависит от реализации в данном языке функции Random. В то же время вам никто не мешает сделать мини-класс обертку (что займет минуты 2 с половиной) который при повторении числа просто требует новое пока не получит его. К тому же реализация Random (как уже было сказано) предполагает полный, не побоюсь этого слова, рандом! Неожиданно? Сомневаюсь что где-то написано что одно и то же число не может выпасть 2 раза подряд или вообще не может выпасть P.S. На засыпку, как Вы предполагаете, отработал бы 11ый вызов random.nextInt(10)? Ему бы просто уже нечего было выдавать |
Сообщ.
#13
,
|
|
|
Цитата Java_starter @ мне нужно чтобы каждое новое число не было равно предидущему тогда это не случайные числа и даже не псевдослучайные и как можно запустить 20 раз запрос ЦЕЛОГО числа из промежутка [0,3) чтобы они не повторялись? Цитата Java_starter @ вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число. нет, вообще неправда. нет там такого. рандомайз в паскале это точно такая же инициализация seed-а. |
Сообщ.
#14
,
|
|
|
Вы все не понимаете что я имею ввиду под "не повторялись"
они могут повторяться сколько угодно, но каждое новое число не должно быть ровно предидущему например: nextInt(3) 0201020101010102020201010102010201020102010201020101010202 Алгоритм от Alex_ru подходит, но например при (nextInt(3) + 1) когда нужны 1, 2, 3 иногда выпадает ноль. |
Сообщ.
#15
,
|
|
|
Цитата Java_starter @ когда нужны 1, 2, 3 иногда выпадает ноль. ну блин измените next = (next + 1) % 3; на next = (next + 1) % 3 + 1; если уж (nextInt(3) + 1) |