powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ява, массивы и чайник
5 сообщений из 5, страница 1 из 1
ява, массивы и чайник
    #34590456
eugenija
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая -

есть один массив, с женскими именами, второй с мужскими, и третий масив с фамилиями.

Нужно случайно выбрать 10 мужских имен и 10 фамилий к ним, 10 женских имен и 10 фамилий к ним.


Из этих 10 имен с фамилиями 20% должно быть "двройных фамилий", типа Иванов-Петров.



Как это можно сделать???

КАк использовать функции random randomize в массивах?


спасибо
...
Рейтинг: 0 / 0
ява, массивы и чайник
    #34590747
Interrupt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что касается, того как использовать рандом, то смотри класс java.util.Random. Создаешь объект, указываешь границы рандома, выбираешь 10 чисел и по этим индексам выбираешь данные из массивов...
...
Рейтинг: 0 / 0
ява, массивы и чайник
    #34593070
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такую рандомизацию я использовал для игры пятнашки, функция initArray заполняет массив 4х4 числами от 0 до 15 без повторения. Комментировать лень, сорри :)

Смысл такой - есть массив

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 import  java.math.*;

 public   class  FifteenInit {
     public  FifteenInit ()
    {}
	   	
     static   int  random( int  max) {
	 return  ( int )Math.round(Math.random() * max);
    }

     static   int  random( int  min,  int  max) {
         return  (( int )min + random(( int )max-( int )min));
    }

     static   void  shift_array( int [] b,  int  start, int  arlen)
    {
	 int  i;
         for  (i = start+ 1 ;i<=arlen- 1 ;++i)
	    b[i- 1 ] = b[i];
        b[arlen- 1 ] = - 1 ;
    }	
	
     public   void  initArray( int  [][] a) {
     int  [] b =  new   int  [ 16 ];
     int  blen =  16 ;
     int  k,i,j,n= 0 ;
     for (i= 0 ;i< 16 ;++i) b[i]=i;
    i =  0  ; j =  1 ;
     for (k= 1 ;k< 16 ;++k)
       {  
          n = random( 1 ,blen- 1 );
          a[i][j] = b[n];
          shift_array(b,n,blen);
          --blen;
          ++j;
           if ( j %  4  ==  0  )
          {
               j =  0 ; ++i;
          }
       }
    }
}
...
Рейтинг: 0 / 0
ява, массивы и чайник
    #34593110
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В голову приходит тупое влобное решение - разбить фамилии на два массива - одинарные и двойные, в цикле подбора считаем выбираемые фамилии, если это очердная пятая фамилия(20% процентов - это пятая часть), то выбираем рандомом из массива с двойными, в противном случае - рандомом из массива с одинарными.
...
Рейтинг: 0 / 0
ява, массивы и чайник
    #34593352
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно пойти с другого конца. Тут есть тонкость, не оговоренная в задании. "Иванов-Петров" и "Петров-Иванов" одна фамилия? Если нет, то можно так. Взять массив с фамилиями, решить что первые 20% фамилий образуют парные (т.е. первые 2). Их перемешиваем, сопоставляем им, соотвественно, первые два мужских и женских имени. Далее просто - берем следующую фамилию и сопоставляем ей мужское/женское имя.
Для того, чтобы сделать случайную расстановку, можно изменить начальный индекс для каждого из массива (т.е. всего три вызова функции Random, для первой поизиции индекса). Тут я бы сделал класс такого массива, и обращался к фамилиям/именам через итератор.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ява, массивы и чайник
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]