На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Функция Random
    Здравствуйте

    Как выглядит в яве команда Randomize чтобы при использовании Функции
    nextInt(3) каждый раз новое число выдавалось?
      Java_starter, сама функция nextInt() модифицирует внутри себя "затравку" генератора, что аналогично randomize
        А что, при nextInt(3) у вас каждый раз одинаковые числа выдаются?
          ExpandedWrap disabled
            new Random().nextInt ( 100 )

          Такой вариант будет каждый раз давать новое значение между 0 и 100 (включая 0 и НЕ включая 100)
          Соответственно вместо 100 можете указать любое другое целое...

          Работает как часы
          Сообщение отредактировано: mgarin -
            Всё очень просто
            ExpandedWrap disabled
              Random ran=new Random();
              int n=ran.nextInt(3);


            Добавлено
            Ну если между 0 и 100 (включая 0 и НЕ включая 100)
            ExpandedWrap disabled
               Random ran=new Random();
              int n=ran.nextInt(100);
            Сообщение отредактировано: Selentium -
              я так уже писал как мне рекомендуют, но оно так не работает
              вот пример:
              public void rand()
              {
              for (int i=1; i<20; ++i)
              {
              System.out.print(_random.nextInt(3));
              }
              }

              выдаёт
              1022200002112221002
                Java_starter,
                Ну так а что не правильно?
                System.out.print - выводит символы один за одним, у вас вывелось 19 рендомных чисел от 0 до 2 включительно.
                Используйте System.out.println или сделайте System.out.print(_random.nextInt(3) + " "); , что бы видеть числа отдельно.
                Запустив 2 раза программу, получите разные числа.
                  мне нужно чтобы каждое новое число не было равно предидущему
                    Java_starter,
                    Тогда как минимум надо сохранять состояние элемента i-1 и потом сравнивать его и выполнять над ним какие-то дейтсвия.


                    ExpandedWrap disabled
                      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;
                              }


                    Можно как-то так, алгоритм можете придумать свой
                      а что в яве это не встроено?
                      вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число.
                      ну ладно, спасибо за совет, буду думать над алгоритмом.
                        Java_starter
                        Ну вообще-то суть рендомного числа в том, что оно рендомно и не зависит от каких то требований...а тут получается что число псевдорендомно, так как оно не может принимать 33% от допустимых значений.
                          Цитата Java_starter @
                          а что в яве это не встроено?
                          вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число.
                          ну ладно, спасибо за совет, буду думать над алгоритмом.

                          Я могу предположить, что вы имеете в виду друг за другом одно и то же число, а не впринципе одинаковые вообще исключаются?
                          Ибо, как мне помнится, в паскале могут, скажем, из 10 результатов быть пару одинаковых, например.

                          Вообщем, это уже зависит от реализации в данном языке функции Random.
                          В то же время вам никто не мешает сделать мини-класс обертку (что займет минуты 2 с половиной) который при повторении числа просто требует новое пока не получит его.

                          К тому же реализация Random (как уже было сказано) предполагает полный, не побоюсь этого слова, рандом! Неожиданно?
                          Сомневаюсь что где-то написано что одно и то же число не может выпасть 2 раза подряд или вообще не может выпасть

                          P.S. На засыпку, как Вы предполагаете, отработал бы 11ый вызов random.nextInt(10)?
                          Ему бы просто уже нечего было выдавать :)
                            Цитата Java_starter @
                            мне нужно чтобы каждое новое число не было равно предидущему

                            тогда это не случайные числа и даже не псевдослучайные

                            и как можно запустить 20 раз запрос ЦЕЛОГО числа из промежутка [0,3) чтобы они не повторялись? :ph34r:

                            Цитата Java_starter @
                            вот в паскале например командой Randomize запрещалось выдавать каждый раз одно и тоже число.

                            нет, вообще неправда. нет там такого. рандомайз в паскале это точно такая же инициализация seed-а.
                              Вы все не понимаете что я имею ввиду под "не повторялись"
                              они могут повторяться сколько угодно, но каждое новое
                              число не должно быть ровно предидущему

                              например: nextInt(3)

                              0201020101010102020201010102010201020102010201020101010202

                              Алгоритм от Alex_ru подходит, но например при (nextInt(3) + 1)
                              когда нужны 1, 2, 3 иногда выпадает ноль.
                                Цитата Java_starter @
                                когда нужны 1, 2, 3 иногда выпадает ноль.

                                ну блин измените
                                next = (next + 1) % 3;
                                на
                                next = (next + 1) % 3 + 1;
                                если уж (nextInt(3) + 1)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0403 ]   [ 14 queries used ]   [ Generated: 20.05.24, 06:34 GMT ]