Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11

Перемешать элементы массива случайным образом

29.11.2007, 22:09. Показов 2796. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрые люди!
Помогите бедному человеку решить казалось бы простую задачку...
Есть текстовой файл в нем скажем 10 строк, надо, что бы все эти строки после обработки поменялись(перемешались) местами, причем совершенно случайно,(Random). Для примера:
1 4
2 => 1
3 3
4 2

Как это сделать? Ну или хотя бы идеи...

И еще один маленький вопрос по random - А можно сделать так, что бы
числа не повтарялись, скажем дан диапазон 1...10, очень часто, бывает, что может выпасть 3, 4, потом опять скажем 3, А надо что бы все числа выпали, без повтора.

Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2007, 22:09
Ответы с готовыми решениями:

Перемешать массив случайным образом
Помогите кто может... необходимо логически код разбить на функции( ну это понятно) и вот само условие: Перемешать массив а(n) случайным...

Перемешать случайным образом компоненты вектора
Дан вектор, нужно перемешать случайным образом его компоненты. Как-то идут мысли в сторону использования rnd, но ничего хорошего не...

Перемешать случайным образом массив целых чисел
Здравствуйте! Подскажите, пожалуйста, как в C# перемешать случайным образом массив целых чисел. Аналог random.shuffle(lst) в Python. ...

8
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11
01.12.2007, 00:09  [ТС]
А-А-А-А-А!
Ну как же это сделать-то?
Я уже пробывал даже присваивать переменные, потом им номера, потом Random - бред какой-то!

P.S там имеется ввиду:
1 строка 4
2 строка =(Random) > 1
3 строка 3
4 строка 2

Ну хоть подкиньте идею!
0
0 / 0 / 0
Регистрация: 02.09.2007
Сообщений: 209
01.12.2007, 21:50
1.Создай масив скажем MyData(9,1). Как ты заметыл наш масив состоит из двух столбцов по десять строчек. Назовем условно первый столбец С1, а второй С2.
2.Затем в ячейки С1 загрузи свои данные из файла.
3.Обрпботай их как тебе нужно.
4.Запусти функцию которая в цикле (x=0 To 9) будет генирировать случайные числа от 0 до 9 и проверять не записано ли уже такое число в ячейки С2. Если нет, то записывает это число в ящеюку (x,1). Если уже записано то заново генирирует и проверяет число.
5.После того как будет заполнен весь масив, запусти функцию которая в цикле (x=0 To 9) будет записывать данные в файл из С1 если C2=x.
Удачи.
0
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11
01.12.2007, 22:34  [ТС]
Если не сложно, напиши код. А то я именно в массивах не очень селен.
Скажем так, есть 'c:1.txt' в нем 32 строки:
Яблоки
Огурцы
......

(Обработка массива)

'c:2.txt'
Огурцы
Яблоки
......

Это все нужно для одной классной проги, всех кто поможет впишу в раздел THANKS TO:....
Спасибо!
0
S1D
02.12.2007, 00:29
А что за прога?
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11
02.12.2007, 18:33  [ТС]
Для жеребьевки участников соревнований.
Хочу написать как freeware.
Много нуждающихся....
ПОМОГИТЕ!!!!!!!
0
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11
03.12.2007, 17:04  [ТС]
Вот, что мне посоветовали, на другом форуме, но вот только как это написать все? С массивами, то как раз напряженка!
Помогите кто может изобразить данный код:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
1. Считываешь все строки в массив строк.
Пусть iMax - верхняя граница массива
 
2. В цикле For i = 0 To iMax-1:
Генеришь случайное число nRnd в диапазоне от i до iMax и меняешь местами строки с номерами i и nRnd
 
3. Пишешь массив в файл
 
Замечание:
Если строки длинные и/или их много, то меняешь местами не строки, а:
- Указатели (копируя память с помощью API)
или
- Псевдоуказатели (создаёшь массив pse(i)=i). Тогда выводишь в файл arr(pse(i)) вместо arr(i).
0
begemot
04.12.2007, 20:44
Всё ниже написанное придумано только что 'с ходу' - абсолютно глупо, нерационально и т.д. но суть в этом(если я правильно понял поставленную задачу).

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
dim lines(1),resortlines(1)
k=1
randomize timer
open 'data.txt' for input as #1
do while not eof(1)
  line input #1,tmp
  lines(k)=tmp
  k=k+1
  redim preserve lines(k)
  redim preserve resortlines(k)
loop
close #1
 
k=k-1
for i=1 to k
desort:
  n=int((k-1)*rnd+1) ' здесь случайное число от 1 до k
  for o=1 to i
    if resortlines(o)=lines(n) then goto desort
  next o
  resortlines(i)=lines(n)
next i
resortlines - беспорядочно отсортированый lines
0 / 0 / 0
Регистрация: 22.02.2007
Сообщений: 11
05.12.2007, 20:16  [ТС]
Всем спасибо! Решение найденно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2007, 20:16
Помогаю со студенческими работами здесь

Перемешать случайным образом буквы слова, введенного с клавиатуры
Перемешать случайным образом буквы слова, введенного с клавиатуры. В общем вот что получилось у меня, только программа выдает...

Как перемешать массив случайным образом без повторений на чистом JavaScript?
Здравствуйте. Я о программировании не имею не малейшего понятия, поэтому сильно не пинайте. На досуге пару недель читал об HTML, СSS, пару...

Дана строчка (с любым текстом), нужно перемешать в ней все слова случайным образом
Дана строчка (с любым текстом), нужно перемешать в ней все слова случайным образом, учитывая разделители? напр. vhodstr:='раз,...

Переставить элементы массива случайным образом
Дан массив из n элементов. Переставьте его элементы случайным образом.

Задать элементы массива случайным образом
Пожалуйста, помогите решить задачку: Все четные элементы увеличить на 2, а нечетные умножить на 2. Задавать элементы случайным образом.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru