我想学习如何限制我开发的程序的随机字符串。
@echo off
:re
echo %RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%
goto re
为此,我拿走了任何不重要的东西。
我想要的:我希望该程序随机生成数字行,使它们适合一定长度,然后回声与用户。
我尝试的是:我试图朝着将字符串作为变量"处理"的方向发展,然后显示它。我唯一不知道的是如何切割变量。
我现在拥有的:
@echo off
:re
set a=%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%
<Limiting code>
echo %a%
goto re
使用〜语法
%variable:~num_to_skip%
%variable:~num_to_skip,num_to_keep%
返回前5个字符
set a=%a:~0,5%
您可以使用负数
仅返回最后5个字符
set a=%_a:~-5%
,由于%random%
生成的数字范围为0..32767,因此对所隐含长度产生的任何数字中的1和2都会有很大的偏见(原始帖子中的6 6 (。
要克服这一偏见,请尝试
set "generated="
set /a length=6
:again
set /a selected=%random%
if %selected% geq 30000 goto again
set "generated=%generated%%selected:~-1%"
set /a length-=1
if %length% neq 0 goto again
只有最后一个数字累积的 n 时间和随机数30000及以上被忽略,因此范围为0..29999。
此例程可能会生成领先的0
s。取决于如何使用生成的数字,这可能很重要,因为批次将带有领先0
的数字字符串视为八月number。