Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2018, 12:34   #11
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 979
По умолчанию

в этой связке массив не перемешается. то еть всегда будет один и тот же.
надо отвязывать Randomize; от последующего вызова Random. иначе это псевдослучайное число всегда будет выдавать одну и ту же последовательность. тоесть часть перемешать надо ставить по первому клику пользователя куда либо. тогда значение времени между Randomize; и Random. будет разное, и как следствие другая последовательность.
Насколько я помню формула рандомногого числа имеет вид Линейный конгруэнтный генератор в котором X(n+1)= ( a*Xn + c ) mod m где Randomize задаёт X0 а коэффициенты всегда равны a=22695477 c=1 m=2^32. Причём последнее вроде как меняется либо от него берётся линейная зависимость для результата. так как на конкретной машине всегда процедура выполняется одно и то же время то и случайные числа будут одними и теми же.

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

Последний раз редактировалось IliaIT; 22.10.2018 в 12:36. Причина: брякнул не подумавши.
IliaIT вне форума Ответить с цитированием
Старый 22.10.2018, 12:37   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от IliaIT Посмотреть сообщение
в этой связке массив не перемешается. то еть всегда будет один и тот же.
простите, это к какому из сообщений комментарий?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2018, 13:12   #13
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Цитата:
Сообщение от Amilman Посмотреть сообщение
...всегда получаются двухзначные:26,28,30,31,35,37,38,39 ,42,45,46,47,48,49,50,52,54,57
И вопросы у которых id от 1..9 не выпадают и еще на 15 вопрос всегда выпадает id 57
Ничего не знаю, у меня работает .
Нюанс этого подхода номера будут отсортированы в возрастающем порядке, но ограничены до 256.
Изображения
Тип файла: jpg screenshot.2.jpg (33.7 Кб, 61 просмотров)
jillitil вне форума Ответить с цитированием
Старый 22.10.2018, 15:35   #14
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 979
По умолчанию

фиг знает почему но у меня одни и те же числа в последовательности. может делфи старая...
Код:
var
  a:set of byte ;
  j:Byte;
begin
  a:=[1..75];
  Label1.Caption:=DateTimeToStr(now);
  Randomize;
  repeat
    j:=Random(75);
    if j in a  then
    begin
      a:=a-[j];
    Memo1.Lines.Add(IntToStr(j));
    end;
  until (Memo1.Lines.Count>17);
end;
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 22.10.2018, 15:43   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
a:=[1..75];
memo1.Lines.Clear;
repeat
...
until (Memo1.Lines.count>17);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.10.2018, 16:23   #16
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Цитата:
Сообщение от IliaIT Посмотреть сообщение
...у меня одни и те же числа в последовательности. может делфи старая...
Ну не знаю, видимо где-то у Вас косяк.
1) Вообще рандомайз лучше вынести в главный модуль ДПР, а не дёргать каждый раз при щелчке мыши.
2) У Вас косяк с ф-й рандом. Она выдаёт значения в диапазоне [0..n), тобишь и последнее вы не получите и нулевое будет бесполезно.
3) Грешить на старый дельф ещё тот аяйай.
Изображения
Тип файла: png bp_002.png (5.9 Кб, 119 просмотров)
Тип файла: png bp_001.png (3.4 Кб, 50 просмотров)
Тип файла: jpg screenshot.3.jpg (19.0 Кб, 45 просмотров)
jillitil вне форума Ответить с цитированием
Старый 22.10.2018, 16:30   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от jillitil Посмотреть сообщение
Ну не знаю, видимо где-то у Вас косяк.
уже evg_m ответил, в чём косяк. см. пост выше
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2018, 17:04   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Способ с множеством хорош пока относительно небольшой процент чисел выбирается. Чем больше будет количество выбираемых чисел, тем более он будет тормозной
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать в файл последовательного доступа N натуральных чисел: a1, a2, ... аn (числа получить с помощью генератора случайных чисел Casillas1 Помощь студентам 15 15.05.2014 11:41
5.Создать файл из 100 целых чисел, лежащих на отрезке [150,9000], используя генератор случайных чисел. -Вывести эти viktoriya95 Паскаль, Turbo Pascal, PascalABC.NET 0 21.02.2014 22:36
Реализовать генератор случайных чисел, ассемблер Pusher Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.08.2010 00:12
как задать диапазон для случайных чисел Аlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.05.2010 03:18
Генерация случайных дат из диапазона, как реализовать? antoha73 Общие вопросы Delphi 7 24.03.2010 07:15