four systems Ответов: 4

Код который печатает строковый массив случайное содержимое хочет чтобы он печатал другую строку


код который печатает случайное содержимое вопрос в том что код должен печатать различное содержимое массива но код здесь печатает одно и то же слово дважды иногда

import java.security.SecureRandom;

public class JavaArrays 
{                        
    private static final String[] names = {"Word", "My", "Name", "Is", "Android"};
    private static SecureRandom random = new SecureRandom();
        
    public static void main(String[] args) 
    {       
        
        for (int i = 0; i < 4; i++) 
        {
            String randomy = (names [random.nextInt(names.length)]);
            System.out.println("The array is " + randomy);                                    
        }
    }         
}


Что я уже пробовал:

закодированная java, которая печатает содержимое случайного массива

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

four systems

улучшил вопрос

Richard MacCutchan

Если вы используете случайный значения, чтобы выбрать, что печатать, то вполне могут быть дубликаты. Если вы хотите печатать только уникальные элементы, то вам нужно сохранить список предыдущих значений и каждый раз проверять, что новый номер ранее не использовался.

four systems

танкс

4 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
код который печатает случайное содержимое вопрос в том что код должен печатать различное содержимое массива но код здесь печатает одно и то же слово дважды иногда

Вот что случайный значит - следующее число не обращает внимания на предыдущую последовательность чисел и выбирает значение случайным образом из общего пространства. Это означает, что вполне возможно получить ряд одинаковых значений подряд, особенно в малых фазовых пространствах. Поскольку у вас есть только 5 предметов, шансы получить два одинаковых значения подряд равны 1/5, но вполне возможно получить 100 "моих" индексов подряд, так же как вы можете получить 20 "черных" звонков в рулетке (так что стратегия "удваивай каждый раз, когда ты проигрываешь" может быстро стать очень и очень дорогой!)

Если вы хотите "случайный, но без повторов", вам нужно скопировать входной массив, скремблировать его, меняя местами случайные элементы, а затем вытащить их один за другим, пока не останется ни одного. Затем вы создаете новый массив, используя все значения, кроме последнего использованного, скремблируете его и повторяете.


four systems

Хотя существует математическая формула для этой перестановки и комбинаций последовательности и рядов или факториалов вот что искал танкс

Рейтинг:
2

Richard MacCutchan

Учитывая количество вопросов, которые вы разместили на basic Java, я бы настоятельно рекомендовал вам перейти на Учебные Пособия По Java™ [^] и потратьте некоторое солидное время на обучение.


four systems

танки делают это часто но им нужно больше летных часов

Richard MacCutchan

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

four systems

танкс

Рейтинг:
12

four systems

код здесь печатает различное содержимое массива

public class Shuffle {
   public static void main(String args[]) {
      
      // create array list object       
      List arrlist = new ArrayList();

      // populate the list
      arrlist.add("Android");
      arrlist.add("Computer Science");
      arrlist.add("Satellite Navigation");  
      arrlist.add("Hyan");  

      System.out.println("Initial collection: "+arrlist);

      // shuffle the list
      Collections.shuffle(arrlist);

      System.out.println("Final collection after shuffle: "+arrlist);
   }    
} 


Рейтинг:
0

Patrice T

Цитата:
код который печатает случайное содержимое вопрос в том что код должен печатать различное содержимое массива но код здесь печатает одно и то же слово дважды иногда

Проблема заключается в ваших ожиданиях, "случайный" означает случайный, и повторение одного и того же слова дважды является следствием случайного. вы даже можете пробежаться с одним и тем же словом каждый раз.
Для того чтобы получить "неповторяющийся" рисунок слов, нужно прибегнуть к процедуре перетасовки:
Перетасовка - Википедия[^]
Фишер–Йейтс шаффл - Википедия[^]
Как и в случае с колодой карт, "неповторение" получается потому, что каждая взятая карта удаляется из колоды при следующих розыгрышах.


four systems

это звучит неплохо было бы попробовать это