Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Вниз

КАК СДЕЛАТЬ, ЧТО БЫ ПРИ ЗАПУСКЕ МОЯ ПРОГРАММА В Labele ОТОБРАЖАЛА ПРОИЗВОЛЬНОЕ ЧИСЛО? 


Dimbambon   (2001-11-24 22:51) [0]

Люди помогите, пожалуйста, надо срочно, что бы программа при запуске в Label1 показывала произвольное,
целое, десятизначное число, да так…………….. что бы оно при каждом запуске было РАЗНОЕ!!!
Может, есть такая функция, похожая на Random?
Или напишите алгоритм какой-нибудь, пожалуйста!!!
Только если надо будет, напишите плиз что надо в uses пихать!

Заранее благодарен!



absent   (2001-11-24 23:25) [1]

Даже с рандомом есть шанс в повторении числа, т.к. это все таки псевдослучайный генератор... Можно конечно каждый раз сохранять результат и сравнивать потом, но это некрасивое решение... Если программу будут запускать 1000000 раз, что за база получится!?...



Pat   (2001-11-25 12:18) [2]

procedure TForm1.FormCreate(Sender: TObject);

var i : integer;

begin

randomize;

label1.Caption := inttostr(random(9) + 1);

for i := 1 to 9 do

begin

label1.Caption := label1.Caption +

inttostr(random(10));

end;

end;



Anonymus   (2001-11-25 14:35) [3]

Удалено модератором



Anonymus   (2001-11-25 14:37) [4]

А самому random написать ???
Юзай GetTickCount, Date, Time и порты 289 и 80 (на асме).



33   (2001-11-25 17:21) [5]

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



Olgerd   (2001-11-25 17:36) [6]

>33 (25.11.01 17:21)
Это уже будет не случайное, а предсказуемое число, даже если перетасовать числа.



33   (2001-11-25 18:07) [7]

Тут вопрос о произвольных числах, а не о случайных.
Разница есть, кроме того, в определении случайного числа
заложенно то, что оно может повториться.



Anatoly Podgoretsky   (2001-11-25 20:23) [8]

Не выйдет число "десятизначное" то есть ограниченное, так что повторение предопределено



Admin   (2001-11-25 20:46) [9]

Удалено модератором



модератор   (2001-11-25 21:45) [10]

>Admin (25.11.01 20:46)
Твои "шедевры" в форуме больше не появятся, как и имя Admin будет удаляться везде.



12345678 ADMIN   (2001-11-25 23:27) [11]

123



33   (2001-11-26 01:06) [12]

To:Anatoly Podgoretsky ©

>повторение предопределено
Через сколько лет?
От того, как часто программа будет запускатся можно вводить
и отсчет периода смены цифр дата-время.
Кстати считать можно начинать с 2001 года .... числа.



33   (2001-11-26 01:54) [13]

Небольшие выкладки:
Пусть мы отслеживаем запуск каждую секунду:
В сутках
60*60*24=86400 сек итого 5 цифр.
возьмем еще 4 цифры на год
9999/365 ~ 27 лет

(скромно так полагаем, что программа
столько отработает)

И еще 1 цифра остается на указание погоды или еще чего случайного. (а можно и пустить на год, тогда нужно 270
лет ждать когда цифры повторятся)

И не факт, что они повторятся через столько лет,
если, конечно программу не запускать каждую секунду.

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

А если еще цифры 16 разрядные ...
или время отслеживать по минутам, а дату на 999 дней,
то остается 3 цифры на случайную комбинацию.

Возможны варианты ...



Polevi   (2001-11-26 08:25) [14]

CoCreateGUID



33   (2001-11-26 09:01) [15]

To:Polevi ©
>CoCreateGUID

К сожалению он выдает 16 байт - 128 бит.

Не лезет.



Anatoly Podgoretsky   (2001-11-26 11:10) [16]

33 (26.11.01 01:06)
Если речь идет об наращивание, то конечно долго, если про случайные (в вопросе про случайные), то ответ сложнее или в два раза быстрее если статистически, если ведем речь об повторении то время не имеет роли результат гарантирован.

33 (26.11.01 09:01)
Сократи до 64, любым путем, затем mod 10000000000.



33   (2001-11-27 01:07) [17]

To:Anatoly Podgoretsky ©
Не совсем понял первый кусок.

Да мне то это собственно и не надо, для себя я такие вопросы решаю.

Я просто хотел сказать, что если важна уникальность,
то проще сделать счет по какой нибудь формуле.
А так, все зависит от от того, что нужно получить.
(уникальность, быстроту, случайность)

Хотя 10 знаков явно маловато. Обычно используют как
минимум 20.



DK   (2001-11-27 03:56) [18]

Мне кажется достаточным будет
Randomize;
A := Random(сколько_нужно)

Если я не ошибаюсь, то Randomize переинициализирует генератор случайных чисел используя в качестве стартового значения дату (вплоть до сотых долей секунды)

Риторический вопрос по поводу термина "случайное число":

Насколько я правильно понимаю этот термин, то он означает, что число выбирается из заданного диапазона АБСОЛЮТНО случайным образом, НЕ основываясь на ранее выбранных числах (что никак не исключает повторения). Хотя это можна задать как дополнительное условие выбора.

Тогда подойдём к вопросу с другой стороны: Допустим нужно выбрать 1000 целых чисел из диапазона 1..1000 (частный вариант, когда количество чисел равно ширине диапазона). В данном случае после выбора каждого последующего числа, диапазон будет сужаться, и после выбора предпоследнего числа, у нас останется только ОДИН вариант для выбора последнего. Где случайность?




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.024 c
3-90194           Грифон                2001-12-23 11:33  2002.01.28  
SQL


6-90332           Star                  2001-11-06 09:14  2002.01.28  
Как определить комп, наиболее активно загружающий сеть?


1-90299           Даггер                2002-01-08 11:49  2002.01.28  
Хочется извратиться, а знаний не хватает...


7-90405           Лана Розанова         2001-10-11 12:07  2002.01.28  
Путь к каталогу


14-90371          evgeg                 2001-12-01 11:40  2002.01.28  
Про конференцию