| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сгенерить строку из случайных символов |
| Автор: Gershkovich 26.1.2007, 17:26 | ||
| Всем привет ! Мне нужно сгенерить пароль - строку из случайных символов (можно не печатных типо #0) На ум приходит тока такое:
Есть ли более элегантный способ ? И более "случайный" ? Зоранее спасибо. |
| Автор: Snowy 26.1.2007, 17:38 | ||
|
| Автор: Veitmen 26.1.2007, 17:42 |
Добавлено @ 17:52 А вообще, как я понимаю, ф-ия рендом тебе вполне подойдет. И твой вариант вполне элегантен и вполне случаен.) Юзай. ) |
| Автор: Alexeis 26.1.2007, 17:55 |
Тогда нужно поискать другой генератор случайных чисел. Встроеный генератор, далек от совершенства. |
| Автор: Gershkovich 26.1.2007, 18:02 |
| Похоже что Random это то что надо. Не буду выпендриваццо. Я просто думал, может в Делфи есть спец. функция... ну или там класс. Всем спасибо. |
| Автор: W4FhLF 26.1.2007, 18:22 | ||
| Ну так, если немного идеализировать и углубиться, то ГПСЧ можно выразить следующей формулой: Val = F(X,Y,Z,I); X - Cлучайный фактор, который не зависит от времени и конкретной машины. Например положение курсора, число тиков или загрузка ЦП. Y - Псевдо-случайный фактор, который зависит от машины. Например версия ОС или серийник винта. Z - Не случайный зависимый фактор. Дата, время, кол-во секунд прошедших с момента перезагрузки. I - любая константа. Вот, далее F должна всё это "перетасовать", причём каждая арифметическая операция не может быть использована более одного раза и использование противоположных операций тоже нежелательно. В итоге получим неплохой ГПСЧ. А для обычных, "домашних целей", сойдёт нечто вроде:
|
| Автор: Gershkovich 29.1.2007, 18:07 | ||
| W4FhLF, спасибо, код работает. Я так понимаю что константы здесь
тожэ можно заменить какими-нить переменными типо Seed ?? |
| Автор: aktuba 29.1.2007, 19:03 |
| Gershkovich, я бы не советовал, т.к. эти константы не с потолка взяты. На них все и стоит... |
| Автор: Gershkovich 29.1.2007, 19:40 |
| aktuba, честно говоря думал што с потолка, поэтому и задал вопрос... :) А что эти констатнты обозначают ??? |
| Автор: W4FhLF 30.1.2007, 18:08 |
| Gershkovich, какие именно? 5345435 и 333 можешь менять как хочешь. |
| Автор: razumsap 7.12.2009, 17:37 |
| Добрый день. Подскажите, переменную Seed как и где надо объявлять? Бо редактор ругается так Seed: Longint = 0; правильно будет? |
| Автор: bems 7.12.2009, 22:06 | ||
К варианту со встроенным ГСЧ: правильней будет так
|
| Автор: razumsap 8.12.2009, 09:11 | ||||||
Каким образом вызвать данную функцию рандом от числа? В каком месте в этой функции нужно провести операцию (и собственно говоря какую?) чтоб рандом выдал числа от 0 до 37.
|
| Автор: Демо 8.12.2009, 17:48 |
Чем эта функция лучше Rand? |