PIHelperSh.RandomEx 1.0.0

dotnet add package PIHelperSh.RandomEx --version 1.0.0                
NuGet\Install-Package PIHelperSh.RandomEx -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PIHelperSh.RandomEx" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PIHelperSh.RandomEx --version 1.0.0                
#r "nuget: PIHelperSh.RandomEx, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install PIHelperSh.RandomEx as a Cake Addin
#addin nuget:?package=PIHelperSh.RandomEx&version=1.0.0

// Install PIHelperSh.RandomEx as a Cake Tool
#tool nuget:?package=PIHelperSh.RandomEx&version=1.0.0                

Библиотека расширения Random

Содержит в себе методы, расширяющие возможности классического генератора случайности C#.

Случайный элемента массива

Семейство методов расширения NextString<>() для Random позволяет получить случайный элемент массива, списка или же случайную букву строки.

Перемешивание массива

Семейство методов расширения Shuffle<>() для Random позволяет перемешать элементы массива или списка случайным образом

Случайный цвет

Метод расширения NextColor() для Random позволяет получить совершенно случайный цвет. Не гарантируется, что он будет смотреться нормально, так как метод в буквальном смысле создаёт цвет из 4-х случайных чисел

Случайный существующий цвет

Метод расширения NextExistColor() для Random позволяет получить случайный цвет из перечисления KnownColor.

Случайная строка

Метод расширения NextString() для Random существует в 2-х вариантах. Первый (наиболее простой) принимает на вход число - длину строки. Возвращает строку, состоящую из случных символов, в число которых входят:

  • Строчные английские буква
  • Заглавные английские буквы
  • Арабские цифры
  • Символ пробела Вторая вариация метода - более сложная. Она позволяет создавать строку, формат которой определяется передаваемым в функцию паттерном. В нём можно использовать язык, похожий на тот, что использует Regex. На данный момент поддерживаются функции:
  • Константные буквы "abc" → "abc"
  • Буквы из диапазона определённое кол-во раз "[a-z]1" → "b", "c", "e"
  • Буквы из списка определённое кол-во раз "[ab]1" → "b", "a", "a"
  • Буквы из списка/диапазона неопределённое кол-во раз "[ab]*"-> "abababa", "ababaabaabbbaba", "abab"
  • Буквы из списка/диапазона 0 или 1 раз "[a-z]?1" → "a1", "1", "v1"
  • Буквы из списка/диапазона ровно 1 раз "[a-z]1" → "a1", "e1", "t1" -Экранирование специальным символов ("[", "]", "-", "?", "\" и т. д.) символом "\" "[\-\[\]]2"-> "[]", "[[", "--" Например генератор номерных знаков автомобилей может быть реализован так:
rnd.NextString("[АВЕКМНОРСТУХ] [0-9]3 [АВЕКМНОРСТУХ]2 [0-9]2 RUS");

В результате будут сгенерированы следующие номерные знаки:

С 889 ЕВ 04 RUS
В 613 ТА 59 RUS
М 718 АВ 58 RUS
А 211 УЕ 21 RUS
К 290 ВО 30 RUS
А 456 НА 99 RUS
Т 397 ОТ 45 RUS
Е 337 НТ 52 RUS
Н 333 АК 81 RUS
О 731 УР 21 RUS

Пример одного из вариантов для генерации адресов электронной почты может быть таким:

rnd.NextString("[a-z][a-z_\\-]*@[a-z]*.[a-z]2");

И его результаты:

l-th-eyiqxcaq_wdhar-lcplrx@hzzkrznida.fv
bn_ihsa_yh@mnrvdnaqflp.pj
tmlfrroby_jtkcvxvoxpko_uqp@ukctawp.nj
hi-zkhlyov@tsejmloxgaxj.yo
iruuvo_tel@wuce.be
nnsmfstpuer@f.qh
pdhzpiuh@avcqzltjwf.ja
cunmqoypgcjgigygl_odfx@sczvoxxc.dm
uuhftpgcfrlzbkuaw-bp@reloqphw.wj
oghcqscnatlwmrgj@anebed.qn
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 151 8/21/2024