Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Оптимально (быстро) составить случайным образом слово  [new]
хмхмхм
Guest
Есть таблица с набором символов для генерации паролей:
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[symbols](
	[Symbol] [nvarchar](1) NOT NULL,
	[ID] [decimal](19, 3) NOT NULL,
	[ID_numeric] [decimal](19, 3) NULL,
	[ID_num_and_CAP] [decimal](19, 3) NULL,
 CONSTRAINT [pk_symbols] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
) 

GO

CREATE UNIQUE NONCLUSTERED INDEX [idx_symbols_ID_num_and_CAP] ON [dbo].[symbols]
(
	[ID_num_and_CAP] ASC
)
WHERE ([ID_num_and_CAP] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Bonus_old]
GO


CREATE UNIQUE NONCLUSTERED INDEX [idx_symbols_ID_numeric] ON [dbo].[symbols]
(
	[ID_numeric] ASC
)
WHERE ([ID_numeric] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Bonus_old]
GO


Таблица заполнена данными:
+ Данные

[Symbol] [ID] [ID_numeric] [ID_num_and_CAP]
1 0.016 0.100 0.028
2 0.032 0.200 0.056
3 0.048 0.300 0.083
4 0.065 0.400 0.111
5 0.081 0.500 0.139
6 0.097 0.600 0.167
7 0.113 0.700 0.194
8 0.129 0.800 0.222
9 0.145 0.900 0.250
0 0.161 1.000 0.278
Q 0.177 NULL 0.306
W 0.194 NULL 0.333
E 0.210 NULL 0.361
R 0.226 NULL 0.389
T 0.242 NULL 0.417
Y 0.258 NULL 0.444
U 0.274 NULL 0.472
I 0.290 NULL 0.500
O 0.306 NULL 0.528
P 0.323 NULL 0.556
A 0.339 NULL 0.583
S 0.355 NULL 0.611
D 0.371 NULL 0.639
F 0.387 NULL 0.667
G 0.403 NULL 0.694
H 0.419 NULL 0.722
J 0.435 NULL 0.750
K 0.452 NULL 0.778
L 0.468 NULL 0.806
Z 0.484 NULL 0.833
X 0.500 NULL 0.861
C 0.516 NULL 0.889
V 0.532 NULL 0.917
B 0.548 NULL 0.944
N 0.565 NULL 0.972
M 0.581 NULL 1.000
q 0.597 NULL NULL
w 0.613 NULL NULL
e 0.629 NULL NULL
r 0.645 NULL NULL
t 0.661 NULL NULL
y 0.677 NULL NULL
u 0.694 NULL NULL
i 0.710 NULL NULL
o 0.726 NULL NULL
p 0.742 NULL NULL
a 0.758 NULL NULL
s 0.774 NULL NULL
d 0.790 NULL NULL
f 0.806 NULL NULL
g 0.823 NULL NULL
h 0.839 NULL NULL
j 0.855 NULL NULL
k 0.871 NULL NULL
l 0.887 NULL NULL
z 0.903 NULL NULL
x 0.919 NULL NULL
c 0.935 NULL NULL
v 0.952 NULL NULL
b 0.968 NULL NULL
n 0.984 NULL NULL
m 1.000 NULL NULL


Как видно, в качестве у каждого символа есть вес (ID), для чисел есть отдельная колонка с весом (ID_numeric), для больших символов и чисел так же есть свой вес (ID_num_and_CAP).


Для того, чтобы случайным образом сгенерировать из этих символов пароль определенной длины создана хранимая процедура:

create procedure [dbo].[p_generate_pass]
   @len int = 16
  ,@symbols int = 100000002 
  ,@pass nvarchar(100) output
as 
begin
	declare @rand decimal(19,3)

  	if @pass is null
		set @pass = ''  

   if @len > 50 
	  select
		 @len = 50

   declare
	  @i int = 0
	

   while @i < @len 
	  begin
		select @rand = rand()
      
		 select top 1
			@pass = @pass + Symbol
		 from
			configure.salt_symbols
		 where
			(@symbols = 100000000 and [ID_numeric] >= @rand) -- получаем только номера
			or
			(@symbols = 100000001 and [ID_num_and_CAP] >= @rand) -- получаем только номера и заглавные символы
			or
			(@symbols = 100000002 and ID >= @rand)         -- получаем все символы

		 select
			@i = @i + 1 
	  end
end



Для массового получения паролей процедура плохо подходит, т.к. её приходится вызывать для каждой записи в цикле.
На 100 тыс. записей все глохнет (обрабатывается более 2 часов).

Два вопроса:
1. Как быстрее всего получить случайное число заданной длины из заданных символов (см. таблицу и запрос в процедуре).
2. Можно ли это сделать для всех записей таблицы (может быть псевдослучайным образом?)
16 сен 14, 16:11    [16581830]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
хмхмхм
Для массового получения паролей процедура плохо подходит, т.к. её приходится вызывать для каждой записи в цикле.

что мешает сделать функцию ?

хмхмхм
Как видно, в качестве у каждого символа есть вес (ID), для чисел есть отдельная колонка с весом (ID_numeric), для больших символов и чисел так же есть свой вес (ID_num_and_CAP).

Непонятно только зачем это для генерации _случайных_ символов ?
16 сен 14, 16:17    [16581861]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Ужос.

1. Веса преобразовать в интервалы [a, b].
2. Генерировать согласно "определенной длины" скока нужно штук rand() во временную таблицу и джойнить с [Данные] по попаданию в интервал.
3. Можно задействовать внешний случайный генератор - писать в таблицу, а оттель выбирать порцайками "скока надо".
16 сен 14, 16:20    [16581885]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
хмхмхм
Guest
Glory
что мешает сделать функцию ??


функцию мешает сделать Rand().


Glory
Непонятно только зачем это для генерации _случайных_ символов ?

Перечитал тему, нигде не сказано, что символы случайные.
Надо из определенного набора символов составить случайным образом слово.
16 сен 14, 16:25    [16581913]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
хмхмхм
Guest
aleks2,

спасибо за советы
16 сен 14, 16:26    [16581918]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
хмхмхм
Glory
Непонятно только зачем это для генерации _случайных_ символов ?

Перечитал тему, нигде не сказано, что символы случайные.
Надо из определенного набора символов составить случайным образом слово.

"Оптимально (быстро) составить случайным образом слово " - название темы
16 сен 14, 16:29    [16581936]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
хмхмхм
aleks2,

спасибо за советы

Ну и ишо убери or из запросов.

Лучше три запроса, чем один or.
16 сен 14, 16:30    [16581937]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
хмхмхм
функцию мешает сделать Rand().

Никто не мешает сделать представление с rand()
16 сен 14, 16:30    [16581941]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Glory
"Оптимально (быстро) составить случайным образом слово " - название темы

"Случайно", не равно "С РАВНОЙ вероятностью".
16 сен 14, 16:31    [16581948]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
хмхмхм
Надо из определенного набора символов составить случайным образом слово.

разве это не одно и тоже, что составить строку из случайных символов ? Даже из определенного диапазона
16 сен 14, 16:31    [16581953]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks2
Glory
"Оптимально (быстро) составить случайным образом слово " - название темы

"Случайно", не равно "С РАВНОЙ вероятностью".

И что дальше ? Зачем таблица с весами то ? Границ диапазона недостаточно что ли ?
16 сен 14, 16:32    [16581962]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Glory
aleks2
пропущено...

"Случайно", не равно "С РАВНОЙ вероятностью".

И что дальше ? Зачем таблица с весами то ? Границ диапазона недостаточно что ли ?

Я так понимаю вес = частота появления (вероятность) символа.

create procedure [dbo].[p_generate_pass]
   @len int = 16
  ,@symbols int = 100000002 
  ,@pass nvarchar(100) output
as 
begin
	declare @rands table ( r decimal(19,3), ch nchar(1), id int identity primary key clustered );

  	if @pass is null
		set @pass = ''  

   if @len > 50 
	  select
		 @len = 50

   while @len > 0 
   begin
     insert @rands(r) values(rand());
     set @len = @len - 1;
   end

   if @symbols = 100000000
       update r set ch = s.Symbol
         from @rands r inner join configure.salt_symbols s on ID_numeric0 <= r.r and r.r < ID_numeric1;
   else
   if @symbols = 100000001
       update r set ch = s.Symbol
         from @rands r inner join configure.salt_symbols s on ID_num_and_CAP0 <= r.r and r.r < ID_num_and_CAP1;
   else
   if @symbols = 100000002
   update r set ch = s.Symbol
     from @rands r inner join configure.salt_symbols s on ID0 <= r.r and r.r < ID1;
     
   select @pass = @pass + ch from @rands;
   
end
16 сен 14, 16:43    [16582031]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
Glory
Member

Откуда:
Сообщений: 104751
aleks2
Я так понимаю вес = частота появления (вероятность) символа.

Тогда это уже не случайно и не с равной вероятностью
16 сен 14, 16:44    [16582040]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
хмхмхм
Guest
aleks2
Ужос.

1. Веса преобразовать в интервалы [a, b].


А чем запрос

select top 1 value from dbo.t
where rand() > a


будет существенно отличаться от

select value from dbo.t
where a <= @rand
and @rand < b
16 сен 14, 17:33    [16582281]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Вот такой вариант

IF OBJECT_ID('tempdb..#N') IS NOT NULL 
	DROP TABLE #N 
GO
IF OBJECT_ID('tempdb..#T') IS NOT NULL 
	DROP TABLE #T 
GO

declare @x nvarchar(max) = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; -- допустимые символы 
declare @l INT = LEN(@x); -- длина списка
declare @NNeeded INT = 1000000; -- нужное число паролей (до 1000000)


WITH N100 AS 
( -- цифры от 0 до 99
	SELECT 0 AS N
	UNION ALL 
	SELECT N100.N + 1 FROM N100
	WHERE N100.N < 99
), -- цифры от 1 до 10000
N10000 AS 
(
	SELECT N = N3.N * 10000 + N2.N * 100 + N1.N FROM N100 N1, N100 N2, N100 N3
)
SELECT TOP (@NNeeded) N, HASH = HASHBYTES('SHA1', CAST(NEWID() AS VARCHAR(64))) + HASHBYTES('SHA1', CAST(NEWID() AS VARCHAR(64))) 
INTO #N 
FROM N10000 N 
SELECT 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 01 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 02 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 03 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 04 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 05 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 06 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 07 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 08 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 09 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 10 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 11 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 12 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 13 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 14 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 15 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 16 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 17 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 18 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 19 * 2) AS INT)) % @l + 1, 1) + 
	SUBSTRING(@X, ABS(CAST(SUBSTRING(HASH, 1, 20 * 2) AS INT)) % @l + 1, 1)  
FROM #N
16 сен 14, 18:25    [16582600]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Glory
aleks2
Я так понимаю вес = частота появления (вероятность) символа.

Тогда это уже не случайно и не с равной вероятностью

С неравной - да.
А вот случайность отнюдь не обязана быть "равной", но останется "случайной".
16 сен 14, 19:45    [16582808]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
хмхмхм
aleks2
Ужос.

1. Веса преобразовать в интервалы [a, b].


А чем запрос

select top 1 value from dbo.t
where rand() > a


будет существенно отличаться от

select value from dbo.t
where a <= @rand
and @rand < b


Хотя бы тем, что будет обработана ОДНА строка, а не несколько.
16 сен 14, 19:47    [16582815]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Во, так еще короче и быстрее, если генерацию случайной последовательности заменить на выбор из таблицы с готовой случайной последовательностью - будет еще быстрее.

create procedure [dbo].[p_generate_pass]
   @len int = 16
  ,@symbols int = 100000002 
  ,@pass nvarchar(100) output
as 
begin
   declare @rands table ( r decimal(19,3) );

   if @pass is null set @pass = ''  

   if @len > 50 select @len = 50

   while @len > 0 
   begin
     insert @rands(r) values(rand());
     set @len = @len - 1;
   end

   if @symbols = 100000000
       update r set @pass = @pass + s.Symbol
         from @rands r inner join configure.salt_symbols s on ID_numeric0 <= r.r and r.r < ID_numeric1;
   else
   if @symbols = 100000001
       update r set @pass = @pass + s.Symbol
         from @rands r inner join configure.salt_symbols s on ID_num_and_CAP0 <= r.r and r.r < ID_num_and_CAP1;
   else
   if @symbols = 100000002
	   update r set @pass = @pass + s.Symbol
		 from @rands r inner join configure.salt_symbols s on ID0 <= r.r and r.r < ID1;
   
end
17 сен 14, 05:31    [16583815]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
хмхмхм
Два вопроса:
1. Как быстрее всего получить случайное число заданной длины из заданных символов (см. таблицу и запрос в процедуре).
2. Можно ли это сделать для всех записей таблицы (может быть псевдослучайным образом?)
1. Создать в БД постоянную таблицу
create table dbo.Numbers (n int primary key);
и заполнить ее последовательными натуральными числами

2. Создать представление
create view dbo.vRand
as
select rand(checksum(newid())) as r;


3. Таблицу символов привести к виду
create table dbo.symbols
(
 SymbolSet_id int not null,
 SymbolWeight numeric(19,3) not null,
 Symbol nchar(1) not null,
 constraint PK_symbols primary key (SymbolSet_id, SymbolWeight, Symbol)
);


4. Функция генерации пароля
create function dbo.fnGeneratePassword
(
 @SymbolSet_id tinyint,
 @Length tinyint
)
returns table
as
return (
 select (
  select
   s.Symbol as [*]
  from
   dbo.Numbers n cross apply
   (select top (1) r from dbo.vRand) r cross apply
   (select top (1) Symbol from dbo.symbols where SymbolSet_id = @SymbolSet_id and SymbolWeight >= r.r order by SymbolWeight) s
  where
   n.n <= @Length
  for xml path(''), type
 ).value('.', 'nvarchar(255)') as password
);


Пример использования
select top (100)
 *
from
 dbo.Numbers n cross apply
 dbo.fnGeneratePassword(100000002, n % 50) p;
17 сен 14, 11:36    [16584725]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
gang
Member

Откуда:
Сообщений: 1394
хмхмхм,

не совсем разобрался с тем как веса из таблицы определяют частоту появления конечных символов. Если интересно попробуйте такий вариант
--view для вызова newid() из функции
create view getNewID as select (select new_id from getNewID) as new_id
go
--Пр0верка view
select new_id from getNewID
go

--Функция
create function fn_test_generate_pwd (@n int, @symbol_type int /*(0=числа, 1=числа+больш., 2=числа+больш.+мал.)*/)
returns varchar(max)
as
begin
declare @pwd varchar(max)
--set @n=15; --Требуемое количество символов.
;with cte (v) as 
(select 1 v union all select v+1 from cte where v<@n  ) 

select @pwd=
(
	select cast(symbol as varchar(1)) from
	(
		select 
		case 
			when symbol_type=0 or @symbol_type=0 then char(int_value) 
			when symbol_type=1 or @symbol_type=1 then char(B_let_value)
			when symbol_type=2 or @symbol_type=2 then char(s_let_value)
		end symbol	

		,symbol_type
		,int_value
		,B_let_value
		,s_let_value
		from
		(
			select 
			 ABS(CAST((select new_id from getNewID) AS binary(8)) %3) as symbol_type
			,ABS(CAST((select new_id from getNewID) AS binary(8)) %10/*maximum*/)+48 as int_value   --квази-случайные числа
			,ABS(CAST((select new_id from getNewID) AS binary(8)) %26/*maximum*/)+65 as B_let_value --квази-случайные буквы (больш.)
			,ABS(CAST((select new_id from getNewID) AS binary(8)) %26/*maximum*/)+97 as s_let_value --квази-случайные буквы (мал.)
		) s
		, cte
	) ss 
	for xml path ('')
) --as pwd
OPTION (MAXRECURSION 0)
return @pwd
end
go

/*
--Проверка времени генерации. 100 Тыс. (числа+больш.+мал.) примерно за 45 сек.
declare @cnt int
declare @t table (pwd nvarchar(4000))
select @cnt=100000

while @cnt>0 
begin 
insert @t (pwd)
 select dbo.fn_test_generate_pwd (15,2) as pwd
set @cnt=@cnt-1
end
*/

100 Тыс. комбинаций мне нагенерил на средненьком железе секунд за 45. Дублей в тесте не было.
17 сен 14, 11:37    [16584728]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
Орлы, статистические свойства распределения значений newid() никак не оговорены.
Любой знающий криптографию и теорию вероятностей плюнет в вашу сторону и будет прав.
17 сен 14, 12:57    [16585157]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
aleks2
Орлы, статистические свойства распределения значений newid() никак не оговорены.
Любой знающий криптографию и теорию вероятностей плюнет в вашу сторону и будет прав.
Прежде чем что-то критиковать в чужом коде, попытайся осознать для чего оно используется.
17 сен 14, 13:23    [16585302]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
gang
Member

Откуда:
Сообщений: 1394
aleks2
Орлы, статистические свойства распределения значений newid() никак не оговорены.
Любой знающий криптографию и теорию вероятностей плюнет в вашу сторону и будет прав.

Любой, кто хоть что-то понимает в макраме, пошлет Вас на йух и будет прав. К чему это громкие заголовки учебников?
Прежде чем разводить джакузи в мелких водоемах, сначала напишите, что конкретно Вас напрягло и как оно мешает
решению исходной задачи.
17 сен 14, 13:35    [16585374]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
aleks2
Guest
invm
aleks2
Орлы, статистические свойства распределения значений newid() никак не оговорены.
Любой знающий криптографию и теорию вероятностей плюнет в вашу сторону и будет прав.
Прежде чем что-то критиковать в чужом коде, попытайся осознать для чего оно используется.


Дай угадаю... для авторизации NTLM по TCP?

ЗЫ. Для генерации псевдослучайной последовальности с равномерным распределением.
Которое никто не гарантирует равномерным.
17 сен 14, 16:46    [16586649]     Ответить | Цитировать Сообщить модератору
 Re: Оптимально (быстро) составить случайным образом слово  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
aleks2
Дай угадаю... для авторизации NTLM по TCP?

ЗЫ. Для генерации псевдослучайной последовальности с равномерным распределением.
Которое никто не гарантирует равномерным.
По существу есть что сказать?
17 сен 14, 17:52    [16587012]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить