Nano Hash - криптовалюты, майнинг, программирование

Vb.net хочет использовать словарь, например хэш-таблицу в Perl

У меня есть следующий код в Perl, который генерирует случайные значения, пока не будет достигнуто количество значений. Хеш-таблица всегда хранит случайные значения в одном и том же «месте», поэтому хэш-таблица имеет правильный размер, когда хранится достаточное количество значений.

while ( (keys( %unique_regex )) <= $amount_regex){
    $unique_regex{ $pass->randregex($regex) } = '1';
}

Теперь я хочу сделать то же самое в vb.net со словарем, но мне нужно установить ключ, чтобы значения были более одного раза в моей хэш-таблице/словаре.

 Dim myDict As New Dictionary(Of Integer, String)
 myDict.Add(0, CStr(Math.Round((((Rnd() Mod 3) * ((input_zufallszahl_obergrenze_1.Value) - input_zufallszahl_untergrenze_1.Value)) + ((input_zufallszahl_untergrenze_1.Value))), 0)))


 Dim tmphashcounter As Integer = 1
 While (myDict.Count <= array_integerzahlen.GetLength(0))

     myDict.Add(tmphashcounter, CStr(Math.Round((((Rnd() Mod 3) * ((input_zufallszahl_obergrenze_1.Value) - input_zufallszahl_untergrenze_1.Value)) + ((input_zufallszahl_untergrenze_1.Value))), 0)))
     tmphashcounter = tmphashcounter + 1

 End While

  • Для людей, не являющихся немцами, было бы очень полезно, если бы вы позаботились о переводе своего кода на правильный английский язык, прежде чем публиковать его здесь. На самом деле, это одна из причин, почему код должен быть исключительно написан на английском языке. 03.11.2011

Ответы:


1

Я должен думать, что родственник будет таким:

While myDict.Count <= array_integerzahlen.GetLength(0)
    randRegex = pass.randRegex( regex )
    If Not myDict.ContainsKey( randRegex )
        myDict.Add( randRegex, 1 )
    End If
End While

Конечно, поскольку вы указываете, что это .NET, вам просто нужно использовать свойство индексирования. Я должен думать, что это может сработать:

While myDict.Count <= array_integerzahlen.GetLength(0)
    myDict( pass.randRegex( regex )) = True
End While
03.11.2011
  • GetLength(0) =› Length. Кроме того, странно, что это поле должно быть массивом, когда его нет в коде Perl, но это не единственная странность в этом коде. 03.11.2011

  • 2

    В .NET вы не будете использовать словарь для этого, вы будете использовать HashSet:

    Dim mySet As New HashSet(Of Integer)()
    Dim lower = input_zufallszahl_untergrenze_1.Value
    Dim upper = input_zufallszahl_obergrenze_1.Value
    Dim rng As New Random()
    
    Do While mySet.Count < DesiredSize
        mySet.Add(rng.Next(lower, upper))
    Loop
    

    Ваша генерация случайных чисел также имеет серьезные недостатки. Помимо очевидных недостатков (что там делает CStr?), вам, вероятно, следует воздержаться от использования Rnd в пользу правильного генератора случайных чисел, а генерация чисел с помощью Mod 3 вносит большую ошибку в случайные числа – они уже даже отдаленно не распределены равномерно. Именно для этого предназначен метод Random.Next.

    Обратите внимание, что реальный код для добавления случайных чисел состоит всего из трех строк — точно так же, как ваш код Perl.

    03.11.2011
  • что было бы лучшим алгоритмом для случайного значения? мод 1337? или другое высокое простое число?. 03.11.2011
  • cstr преобразует целочисленное значение в строку, потому что мой dict требует строкового значения: › 03.11.2011
  • @Tyzak Mod всегда плох из-за того, как он работает. Смотрите мой код для лучшего способа. Что касается CStr, зачем вам строковые значения? Ваш исходный код хранит целые числа в словаре, и это звучит правильно. Не храните числа в виде строк. String предназначен только для текстовых данных. Преобразовывайте данные в строку только для целей их отображения, а затем как можно позже. Всегда выполняйте свои расчеты с типом real. 03.11.2011
  • Сильный уклон??? Если возвращается 32-битное число, шансы равны 1 431 655 766 : 1 431 655 765 : 1 431 655 765. 03.11.2011
  • @ikegami Это не так. Классические ГПСЧ имеют известные недостатки в распределении младших битов. Перекос будет гораздо заметнее. 04.11.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..