Страницы: 1
RSS
Генератор случайных ключей, ГСЧ + буквы
 
Здравствуйте.
Подскажите пожалуйста, как с помощью формулы генерировать ключи, например  656DC7985B595EB725F8EF143756845FDF
 
Это шестнадцатеричное число? или буквы могут быть любыми?  
 
Какой набор знаков должен входить в ключ?
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Михаил С. написал: Это шестнадцатеричное
Да, похоже это шеснадцатеричное число
Набор букв следующий A,B,C,D,E,F
 
И сколько знаков?
вариант для 10 знаков;
=ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(1;549755813887);10)
если нужно больше - применяйте сцепку по десять; для меньшего числа - F1 по функции ДЕС.В.ШЕСТН()
 
Для 34 знаков (как в примере):
=ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(2^36;2^39-1))&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(2^36;2^39-1))&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(2^36;2^39-1))&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(2^12;2^16-1))
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Михаил С. написал: =ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(1;549755813887);10)
всего 34 знака
 
См. Пост 7
«Бритва Оккама» или «Принцип Калашникова»?
 
Доброе время суток
Цитата
bedvit написал: См. Пост 7
Можно вопрос, а вариант с ведущими нулями не допустим и весь ли диапазон от 34 нолей до 34 F получится?
 
bedvit, спасибо,это  работает.
 
Цитата
Андрей VG написал: Можно вопрос, а вариант с ведущими нулями не допустим...
Здравствуйте, Андрей.

Интересует также этот вопрос,но с  десятичными числами.
Например число 33 нужно представить как 033.
Возможно такое?
 
Доброе время суток
Вариант на VBA
Код
Private Function RightAdd(ByVal this As String, ByVal textLen As Long) As String
    Dim vLen As Long
    vLen = Len(this)
    If vLen < textLen Then this = String$(textLen - vLen, "0") & this
    RightAdd = this
End Function

Public Function Hex34() As String
    Math.Randomize
    Hex34 = RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) & RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) & _
        RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) & RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) & _
        RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) & RightAdd(Hex$(Int(1048576 * Math.Rnd)), 5) _
        RightAdd(Hex$(Int(65536 * Math.Rnd)), 4)
End Function

P. S. Специально, чтобы и в Word VBA :)
Изменено: Андрей VG - 11.05.2016 10:23:58
 
Цитата
Андрей VG написал:
Можно вопрос, а вариант с ведущими нулями не допустим и весь ли диапазон от 34 нолей до 34 F получится?
Выходит следующее:
мин: 1000000000100000000010000000001000
мах: 7FFFFFFFFF7FFFFFFFFF7FFFFFFFFFFFFF
Если выводить все нули, в ДЕС.В.ШЕСТН() они схлопываются в один, в формуле выйдет всего "0000". Если недостаточно мин значения (см. выше) и нужно 34 нуля, и 34 F нужно менять логику формулы.  
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Pawel1 написал: Например число 33 нужно представить как 033.
1)=ТЕКСТ(33; "000")
2)или формат ячейки --все форматы--"000"
«Бритва Оккама» или «Принцип Калашникова»?
 
Андрей VG с вашего верного замечания, внес корректировки:
мин: 0000000000000000000000000000000000
мах: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Формула:
=ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^36-1);9)&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^36-1);9)&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^36-1);9)&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^28-1);7)
«Бритва Оккама» или «Принцип Калашникова»?
 
через UDF (с заданием длины шестнадцатеричного ключа - до 32 767 знаков)
Код
Function RndHex(length As Integer) As String
Dim s As Byte, x As Long
Application.Volatile True
For x = 1 To length
s = 48 + Int(Rnd() * 23)
If s > 57 And s < 65 Then s = s - 7
RndHex = RndHex & Chr(s)
Next
End Function
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, спасибо за разъяснение и дополнение.
 
Андрей VG, всегда пожалуйста! "Я не волшебник. Я только учусь"@
«Бритва Оккама» или «Принцип Калашникова»?
 
Помогите пожалуйста с формулой для такого формата ключа ADUA3-0FZWQ-A3IO2-R0V8I-Z46MB
 
Pawel1, =ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^20-1);5)&"-"&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^20-1);5)&"-"&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^20-1);5)&"-"&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^20-1);5)&"-"&ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;2^20-1);5)
«Бритва Оккама» или «Принцип Калашникова»?
 
Хотя я смотрю у вас там не 16-е значения. Какие знаки должны содержатся в ключе?
«Бритва Оккама» или «Принцип Калашникова»?
 
Код
Function SerialNomer() As String
Dim i&, ii&, Sl, Sr$
Do
    i = i + 1
    Randomize
    For ii = 1 To 5
    Sl = 7 * Rnd
        If Sl <= 2 Then
            Sr = Int(10 * Rnd)
        Else
            Sr = Chr(26 * Rnd + 65)
        End If
        SerialNomer = SerialNomer & Sr
    Next
    If i = 5 Then Exit Do
        SerialNomer = SerialNomer & "-"
Loop
End Function
 
Внесу своих 5 копеек: UDF с заданием длины ключа - до 32 767 знаков. Выводится комбинацией цифр и английского алфавита с разделителем "-" через каждых 5 знаков. Генерация при пересчете листа (формул) или нажатии F9.
Код
Function RndChr(length As Integer) As String
Dim s As Byte, x As Long
Application.Volatile True: Randomize
For x = 1 To length
s = 48 + Int(Rnd() * 43) 'по 43Chr вкл
If s > 57 And s < 65 Then s = s - 7
RndChr = RndChr & Chr(s)
If Not CBool(x Mod 5) And x <> length Then RndChr = RndChr & "-"
Next
End Function
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Михаил С. написал: вариант для 10 знаков; =ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(1;549755813887);10)
Уважаемый, а по какой логике вы вычислили чисто 549755813887 ? Я в другой задаче хочу преобразовать вашу формулу под 6 случайных символов (по сути - код цвета HTML) Но не получается.
Страницы: 1
Читают тему
Наверх