Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Псевдослучайная перестановка элементов массива, не используя Random() 
V
    Опции темы
DeadLink
  Дата 23.1.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.12.2006
Где: Самара

Репутация: нет
Всего: нет



Имеется битовый массив из 128 элементов требуется сформировать псевдослучайную перестановку элементов в соответствии с алгоритмом 
Код

I[k]=(29*I[k-1] mod 512, J[k]=I[k]/4, I[0] mod 2<>0....


Код

procedure Rand(var pv: array of byte);
const
  a=29;
  b=512;
var
  tv: array[0..127] of byte;
  i,j: integer;
begin
tv[0]:=7;
pv[0]:=tv[0] div 4;
for i:=1 to 127 do
begin
  tv[i]:=(a*tv[i-1]) mod b;
  pv[i]:=tv[i] div 4;
end;
end;

Как я понял перестановка - значит элементы повторяться не должны, но с моей процедурой они через определенный интервал повторяются... Помогите  smile 

PM MAIL   Вверх
DeadLink
Дата 24.1.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.12.2006
Где: Самара

Репутация: нет
Всего: нет



Что, не у кого идей нет??? Может быть дело в типе byte? smile 
PM MAIL   Вверх
Zero
Дата 24.1.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DeadLink @  24.1.2007,  14:39 Найти цитируемый пост)
Что, не у кого идей нет???

А в чём вопрос то??? Ты дал кусок программы который нельзя потестить а сказать только навскидку, но приэтом дал алгоритм по которому должно быть и его подставил... Какие идеи ты хочешь получить???
Ну скажем, то что у тебя начало такое:
Код

tv[0]:=7;
 это будет означать что при каждом запуске будет одно и тоже... Для разных числел, нужно число из системного времени генерировать. А что ещё тут можно добавить. smile Правильно ты переписал две строчки готового алгоритма в свою прогу... да вроде так.
Ещё что нибудь? smile 

Это сообщение отредактировал(а) Zero - 24.1.2007, 21:46
PM MAIL ICQ   Вверх
DeadLink
Дата 26.1.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.12.2006
Где: Самара

Репутация: нет
Всего: нет



Извините.... 
Давйте все распишу, как есть...
Решаю олимпиадную задачу:
1) Сформировать сообщение, состоящее из 16 символов, каждый символ представляется 8 битами (ASCII).
2) Представить сообщение в виде битового массива.
3) Сформировать псевдослучайную перестановку элементов массива [0..127] в соответствии с алгоритмом 1: I[k]=(29*I[k-1] mod 512, J[k]=I[k]/4, I[0] mod 2<>0.
и так далее... Вообщем шифрация сообщения, кодирование итерационным кодом и все такое.. 
tv[0]:=7; потому, что в задании сказано нечетное число из интервала [0..127].. А если я буду брать случайное число, то потом не смогу это сообщение дешифровать... Это как ключ..
Цитата

Правильно ты переписал две строчки готового алгоритма в свою прогу... да вроде так.
Ещё что нибудь? smile 

Дык код-то не так как-то работает... у меня должна получиться перестановка элементов, а они (элементы) повторяются.... 
ЗЫ: Я не могу выложить программу, если нужна она, только на мыло могу
PM MAIL   Вверх
Zero
Дата 26.1.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DeadLink @  26.1.2007,  09:48 Найти цитируемый пост)
3) Сформировать псевдослучайную перестановку элементов массива [0..127] в соответствии с алгоритмом 1: I[k]=(29*I[k-1] mod 512, J[k]=I[k]/4, I[0] mod 2<>0.

Цитата(DeadLink @  23.1.2007,  07:55 Найти цитируемый пост)
pv[0]:=tv[0] div 4;

Цитата(DeadLink @  23.1.2007,  07:55 Найти цитируемый пост)
pv[i]:=tv[i] div 4;

Где сказано, что деление должно быть целочисленым??? 
PM MAIL ICQ   Вверх
DeadLink
Дата 26.1.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.12.2006
Где: Самара

Репутация: нет
Всего: нет



Цитата

Где сказано, что деление должно быть целочисленым???  

Дык это ж очевидно:
В массиве pv у меня будут сгенерированы псевдослучайные числа, они же будут являться индексами для перемешивания бит в битовом массиве...
PM MAIL   Вверх
Zero
Дата 26.1.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DeadLink @  26.1.2007,  15:09 Найти цитируемый пост)
Дык это ж очевидно:

Ты наверно не так понял... Но я имел ввиду, почему ты используешь оператор div, в задании явно указан оператор /.
Может быть я чё не догоняю, но по твоему коду тяжело сориентироваться, т.к. он неполный и несовсем понятно что на выходе из него ты используешь. Так что лучше скинь всё прогу на мыло, если уж нехочешь чтобы остальные имели возможность тебе помочь. smile 
PM MAIL ICQ   Вверх
DeadLink
Дата 26.1.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 1.12.2006
Где: Самара

Репутация: нет
Всего: нет



Цитата

Так что лучше скинь всё прогу на мыло, если уж нехочешь чтобы остальные имели возможность тебе помочь.  

Я бы выложил ее тут, но у меня не получается файл присоединить я завтра на мыло отправлю, а сегодня все обдумаю и правильно сформулирую вопрос, 
Zero, спасибо за понимание 
PM MAIL   Вверх
Zero
Дата 26.1.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DeadLink @  26.1.2007,  17:28 Найти цитируемый пост)
Я бы выложил ее тут, но у меня не получается файл присоединить
 Нафиг нужен файл... smile Тут в панели инструментов "код", выбираешь подсвестку "Delphi", и между ней как цитату всавляешь код. Типа такого:
Код

var
...
begin
....
end.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.