С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 45
1

Рандомная генерация букв и чисел

06.03.2019, 21:16. Показов 4558. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать рандомную генерацию из определённого алфавита? Подскажите пожалуйста. Желательно с объяснением написанного кода (как и за что отвечает). Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2019, 21:16
Ответы с готовыми решениями:

Рандомная генерация чисел, и их разбитие по диапазонам
Помогите пожалуйста с домашней работой.Нужно сделать рандомною генерацию 200 чисел в диапазоне от 0...

Рандомная генерация
Здравствуйте скажите пожалуйста как сделать рандомную генерацию 15 значных паролей то есть у меня...

Рандомная генерация объектов
Помогите, как сделать так чтобы по всей ширине дороги, начали появляться препятствия(встречный...

Рандомная генерация лабиринта
В общем объясняю словами)) сначала пользователь должен ввести высоту и ширину поля лабиринта,...

4
6260 / 2134 / 337
Регистрация: 10.12.2013
Сообщений: 7,366
06.03.2019, 22:53 2
PowerShell
1
2
3
$MyList = "А" .. "Я"
$Mylist
$MyList | Sort-Object {Get-Random}
Output:
Код
А
Б
В
Г
Д
Е
Ж
З
И
Й
К
Л
М
Н
О
П
Р
С
Т
У
Ф
Х
Ц
Ч
Ш
Щ
Ъ
Ы
Ь
Э
Ю
Я
Код
Ь
Й
Ю
Я
Ы
Б
Ъ
Э
Ф
К
М
Ж
Л
У
В
Г
С
Н
О
Т
Д
Е
А
Р
Щ
З
Ц
И
Х
Ч
П
Ш
0
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
07.03.2019, 00:42 3
Цитата Сообщение от volodin661 Посмотреть сообщение
$MyList = "А" .. "Я"
Это только начиная с PS 6, а в 5.1 такая красота не работает

Поэтому приходится использовать [char]

PowerShell
1
(65..90) | Sort {Get-Random} |% {[char]$_}
PowerShell
1
$a=(65..90) |% {[char]$_}; $a | Get-Random -Count $a.Count
0
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
07.03.2019, 11:11 4
Пример генерации алфавита с пояснениями:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
  setlocal enabledelayedexpansion
    :: сперва генерируем алфавит
    for /l %%i in (65,1,90) do (
      cmd /c exit /b %%i
      set "abc=!abc!!=exitcodeascii!" % rem : !abc! = 'A..Z'
    )
    :: теперь нужно перемешать полученную строку
    :: сделать это можно по-разному, здесь же приводится решение "в лоб"
    :: генерируем последовательность псевдослучайных чисел в диапазоне 0..25
    :while
      set /a "r=!random!*26/32768"
      if not defined arr.!r! set "arr.!r!=@"&set "m=!r!;!m!"
      for /f "delims=:" %%i in ('set arr ^| findstr /nirc:"@"') do set "n=%%i"
      if !n! neq 26 goto:while
    :: отбрасываем нуль символ
    set "m=!m:~,-1!"
    :: после того, как последовательнось сформирована, извлекаем в цикле
    :: символы из !abc!, - на этом, собственно, все
    for %%i in ("!m:;=";"!") do echo !abc:~%%~i,1!
  endlocal
exit /b
Если требуется перемешать числа и буквы одновременно, лучше объявить строку вида:
Windows Batch file
1
2
3
...
set "abc=АБВГД...0123456789"
...
и оперировать ею: и скорости прибавится, и проще для восприятия станет.
Альтернативным решением является использование WSH, sed, vim или PowerShell, - последний, начиная с семерки в виндах поставляется по умолчанию.
PowerShell
1
2
3
4
# кириллица
[Char[]](1040..1071) | sort {Get-Random}
# латиница с цифрами
[Char[]](65..90+48..57) | sort {Get-Random}
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.03.2019, 22:02 5
osman22,
если надо сделать рандомный набор из определенных символов (не по-одному рандомно размещенных, а рандомно взятых из строки, т.е. один определенный символ может на выходе присутствовать несколько раз) и определенной длины, то можно так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
set "nA=АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
:: Нужная длина
set "l=33"
 
setlocal enabledelayedexpansion
 for /f "delims=" %%a in ('">$ echo:!nA!& echo:$"') do set /a ln=%%~za-2& del $
 for /l %%n in (1 1 %l%) do call :# %ls%
 echo:
endlocal
pause& exit
 
:# 
 set /a r=%random%%%%ln%
 set "s=!nA:~%r%,1!"
 <nul set /p=%s%
exit /b
в переменную %nA% можно поместить набор букв и цифр и смесь латиницы и кириллицы, не стОит только с разными символами играть - бат не очень их любит
длину разную можно задавать и менее количества символов в %nA% и более.
0
07.03.2019, 22:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2019, 22:02
Помогаю со студенческими работами здесь

Рандомная генерация фигур в матрице
Задается: Какого размера будет квадратная пустая матрица (int SIZE) заполнена 0. Должно вывести:...

Рандомная генерация элементов матрицы
Вот небольшая программка там нужно сделать что бы цифры в матрицу вводились не с клавиатуры а...

Рандомная генерация объектов в определённой области
Нужно чтобы определённые игровые объекты постоянно появлялись в определённой области. Если...

Рандомная генерация примеров и положения ,,двери,,
Есть проект-простая мобильная игра,главный игрок без остановки движется вперед,надо на ходу выбрать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru