Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
#1

Исключить поворения из random - Программирование Android

04.12.2012, 12:25. Просмотров 972. Ответов 5
Метки нет (Все метки)

Доброго времени суток. Имеется код:
Java
1
2
Random rand = new Random();
int rndInt = rand.nextInt(n)+1;
Как исключить повторения n ? То есть чтоб n выпадало один раз. Сейчас n пока что равно 11.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 12:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключить поворения из random (Программирование Android):

Как исключить число из диапазона в Random? - Delphi
Есть 4 переменных: 1,2,3 и 4 - типа Integer а форме Label1 и Label2 - нужно чтобы при создании формы - их свойства Color -...

Что не так с 'Random' или There is no overloaded version of 'Random' that can be called with these arguments - Delphi
Доброго времени суток! Я с программированием на "Вы", поэтому очень прошу доходчиво объяснить, что не так с этой строчкой? Выводит ошибку:...

У меня непонятки с методами Math.random() и Random() - Java SE
Задача : заполнить массив из 15 элементов случайным образом вещественными значениями х (-5 <= x <= 5) class Massiv { public...

Когда твой Random совсем не Random - C#
Мой код ведет себя весьма странно. У меня есть список экземпляров класса в котором (Уж простите что я такое наделал) есть экземпляр другого...

Random и объекты класса (pseudo random) - C++
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

переделать Math.random() в random() - Java SE
public static void CompMove() { int x = (int) (Math.random() * 3), y = (int) (Math.random() * 3); while (field == '0' || field ==...

5
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
04.12.2012, 15:27 #2
Во мой код... недавно делал это для игры пятнашки....))))))


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int[] m={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};        
        int k=15;
        for (int i=1;i<=4;i++)
            for(int j=1;j<=4;j++)
            {   
                if ((i==4) && (j==4)) {mas[i][j]=16; break;}
                int s=rand.nextInt(k);
                mas[i][j]=m[s];
                for(int z=s;z<k-1;z++)
                {
                    m[z]=m[z+1];
                    m[z+1]=0;
                }  
                k--;
            }
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.12.2012, 22:35 #3
Java
1
2
3
HashSet<Integer> set = new HashSet<Integer>();
int rndInt ;
for(rndInt = rand.nextInt(n)+1;!set .add(rndInt );rndInt = rand.nextInt(n)+1){}
Добавлено через 1 минуту
нет возможности сейчас проверить, но вроде должно работать...
1
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
05.12.2012, 00:02  [ТС] #4
Цитата Сообщение от RosPC Посмотреть сообщение
Во мой код... недавно делал это для игры пятнашки....))))))
У вас перебор идёт из 15 цифр, а у меня планируется 500.

V0v1k ваш вариант работает, хотя не знаю как проверить будет ли в дальнейшем повтор или нет
Если сейчас n=11, а потом будет около 500
0
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
05.12.2012, 10:37 #5
Вот тут я четырехзначное число загадывал - 4 числа от 0 до 9, только тут еще ноль на первом месте стоять не должен.
Думаю, суть та же - записывать отработанные числа в ArrayList и потом новое число прогонять по коллекции

Java
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
    /**
    * Метод создает загаданное число.
    * Оно представляет собой массив из
    * 4х целых неповторяющихся цифр
    */  
private void createPuzzle(){
        
        int numbersCount = 0;
        boolean existFlag = false;
        
        while (numbersCount < 4){
            int newNumber = (int)((Math.round(Math.random() * 9)));
            for (int i = 0; i < puzzle.length; i ++) {
                if (newNumber == puzzle[i]) {
                    existFlag = true;
                    break;
                }
            }          
            if (existFlag){
                existFlag = false;
                continue;
            }
          
            if (newNumber == 0 && numbersCount == 0) 
                    continue;   
          
            puzzle[numbersCount] = newNumber;
            numbersCount ++;                            
        }   
        
        Log.i("my info", "число: " + puzzle[0] + ", " + puzzle[1] + ", " + puzzle[2] + ", " + puzzle[3]);
        
    }
0
RosPC
-6 / 3 / 0
Регистрация: 21.09.2012
Сообщений: 80
05.12.2012, 21:12 #6
Цитата Сообщение от Digetix Посмотреть сообщение
У вас перебор идёт из 15 цифр, а у меня планируется 500.

V0v1k ваш вариант работает, хотя не знаю как проверить будет ли в дальнейшем повтор или нет
Если сейчас n=11, а потом будет около 500
он точно работает я проверял... и какая разница сколько цифр, в масыв m можно програмно записать и больше цыфр... и увеличить К....
0
05.12.2012, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 21:12
Привет! Вот еще темы с ответами:

random. - Pascal
Сгенерировать k случайных чисел из диапазона от а до b (а и b ввести с клавиатуры). Определить сколько среди них чисел, кратных 5

Random - C#
Нужно чтобы генерировались вот такие значения меньше единицы заданной длины: 0.7147149250169380583401773502894613805725017 ...

Random - C++
Помогите,пожалуйста, подкорректировать текст проги так,что был массив задавался рандомно,а не вводился как у меня вручную. #include...

Random - C#
Вопрос очень простой. Как присвоить переменной типа int, рандомное значение?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru