Вук Мрнявчевич
10:28 30-05-2006
Жаль, что я подзабыл математику. Мне нужна функция, которая, выражаясь ненаучно, в промежутке от 0 до 30 выдает значения от 0 до 0,5, от 31 до 35 -- от 0 до 0.75, от 36 до 40 -- от 0 до 0.99, от 41 значения стремятся к 1. И все это, ясень пень, плавно, а не скачками...

Жаль, что я вообще плохо знаю математику, особенно тот ее раздел, который ведает crc32, md5, sha1 и т.п. Мне нужна функция, которая поставит однозначное соответствие между четырехзначным целым и некоей не слишком длинной (скажем, не больше 16 символов) строкой. Причем строка не должна нуждаться в URL-кодировании/декодировании...
Комментарии:
kv75
10:52 30-05-2006
1. Не понял. Что значит "выдает значения"? Поиграйся с арктангенсом или интегралом от гауссиана (всё время забываю, как эта Фи-функция называется).

2. Так, чтобы никто не догадался? Или цель другая?
Вук Мрнявчевич
11:02 30-05-2006
kv75 1. Ну, не выдает, ну, возвращает Я ж говорю -- забыл все...
2. Так, чтоб никто не догадался.
kv75
11:13 30-05-2006
1. Т.е.
f(0)=0
f(30)=0.5
f(35)=0.75
f(40)=0.99
f(x)→1 при x→+∞
А эти числа точно даны? Потому что при таких числах вторая производная гулять будет сильно, если первая должна быть непрерывной. Точка перегиба будет, вот что! Она тут и задумывалась в районе 35?

2. Я тоже плохо себе представляю официальные алгоритмы. Но вообще ничего сложного. Можешь посмотреть, как md5 устроен. Но это всё хэширование, однозначности обратного отображения (там, где оно определено) никто не гарантирует.
Вук Мрнявчевич
12:46 30-05-2006
kv75 1. Практически точно. Тем более, эта функция будет вызываться в разных местах и с разными параметрами. Практически, эта функция -- вероятность некоего события в зависимости от времени, прошедшего с предыдущего такого же события.

2. Пожалуй, обратное отображение мне не очень нужно. И меня бы устроил md5, но он выдает очень длинную строку. А если я просто возьму n первых символов из md5-строки, то ведь однозначного соответствия не получится. Или я ошибаюсь?..
Megadest
13:56 30-05-2006
Барс Шанхайский
Значит все таки не от 0 до 0.75, а от 0.5 ?
Иначе стоило бы играться с чем-нибудь несложным типа x*sin x

Если нужна однозначность -- тебе 4 цифирок по любому не хватит. Или строки будут уж очень мало отличаться. Это на всякий случай, вдруг ты не задумывался...
Вук Мрнявчевич
14:13 30-05-2006
Megadest эээ... да, правильно, спасибо

Почему не хватит?.. ты же отличаешь даже однозначные числа Насколько строки будут отличаться -- мне все равно. Я не буду их вручную сравнивать.

Кстати, только что сообразил, что мне таки нужно однозначное соответствие, т.е. преобразование из строки в число... Блин!..
kv75
22:40 30-05-2006
Барс Шанхайский Ты лучше скажи, что ты вообще хочешь сделать, и мы подумаем над более общей задачей.
Вук Мрнявчевич
23:06 30-05-2006
kv75 это не дневниковый разговор
kv75
23:14 30-05-2006
Барс Шанхайский Ну сделай закрытую запись. Или пиши на мой адрес на yahoo. Не забудь к здешнему нику добавить месяц моего рождения (две цифры, формат с начальными нулями).
Megadest
23:17 30-05-2006
Барс Шанхайский
При взаимно однозначном (ты ведь именно про это?) отображении строчек может быть разных не более 10000. Чтобы 4 циферок хватило.
Это -- меньше, чем все возможные строчки, состоящие из ТРЕХ латинских буковок. А так -- все нормально...

Соответственно, чтобы хватило диапазона 0000-9999 -- нужно чтобы вариабельность строчек была ОЧЕНЬ низкой (для таких длинных строк).

И вообще -- у тебя, небось, асечных контактов до забора и больше Раз уж не публично...
Вук Мрнявчевич
00:02 31-05-2006
kv75 прибавить к началу или к концу?

Megadest а!.. Все, я понял, о чем ты. Опять же -- фиг с ней, с вариабельностью.
Ну тогда завтра в аське поболтаем
kv75
09:20 31-05-2006
Барс Шанхайский К концу, конечно. Если ещё и в начале ника цифры, то какой же это ник? Это пароль получается.

А насчёт строчек – берёшь нужные цифры, добавляешь туда дату, время и кучу другой ненужной информации по вкусу, хорошенько перемешиваешь – и получаешь огромную кучу строк на выходе.
Вук Мрнявчевич
09:33 31-05-2006
kv75 дата-время мне там не годятся...
Megadest
09:33 31-05-2006
kv75
Напоминает "Я печатаю со скоростью 1000 символов в минуту. Такая ерунда получается..."

Чтобы переводить что-то в 4 цифры (а добавление всякой ерунды дело не меняет) взаимно однозначно, мощность исходного множества не должна превышать 10000. По любому. Мне так говорит мое внутреннее мехматовское образование
Вук Мрнявчевич
09:43 31-05-2006
Megadest Тут все дело в том, как будет происходить процесс.
Сначала берется число. Потом оно преобразуется в строку. Потом берется ЭТА строка и преобразуется в число. Потом идет проверка, могло это самое число появиться или нет... в общем, в аське объясню
kv75
09:47 31-05-2006
Барс Шанхайский Ну да, всё правильно ты объяснил Мегадесту, я так и понял. Речь у тебя идёт об однозначном отображении маленького круга в большой, при этом обратное отображение на некотором множестве однозначно, а на некотором не существует.
Megadest
10:01 31-05-2006
Барс Шанхайский kv75
Перечитал пост. Понял, что туплю.
Барс, пиши в аську, пока я дома
Вук Мрнявчевич
10:37 31-05-2006
kv75 обратное отображение на некотором множестве однозначно, а на некотором не существует да!..
kv75
20:47 31-05-2006
Отправил тебе функцию...