|  | 
 
| flybird2020 初级用户
 
   
 
 
 
 积分 103
 发帖 52
 注册 2007-4-13
 状态 离线
 | 
| 『楼 主』:
 [求助]如果列举出由随机数字加随机字母组成的4位组合
 
使用 LLM 解释/回答一下 
 
 
一个任意数,由两个数字加两个字母组成如2r3p
 i4e5
 q56i
 这样的组合如何列举?并保存到一个TXT中做变量
 在BBS上搜索了随机关键字
 无解。。。
 谢谢大大们了
 
 
 
 
 |  | 
|  2007-9-20 20:21 |  | 
|  | 
 
| Nickey 初级用户
 
   
 
 
 积分 132
 发帖 59
 注册 2007-8-23
 来自 GuangZhou
 状态 离线
 |  | 
|  2007-9-20 20:39 |  | 
|  | 
 
| flybird2020 初级用户
 
   
 
 
 
 积分 103
 发帖 52
 注册 2007-4-13
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by Nickey at 2007-9-20 08:39 PM:@echo off
 setlocal enabledelayedexpansion
 set str1=abcdefghijklmnopqrstuvwxyz
 set str2=0123456789
 set /a char1=%random%%%26
 set /a num2=%random%%%10
 set /a char2=%random%%%26
 set /a num2=%ra ...
 
谢谢大大 
假如我想列举可能所有的随机数值到1.TXT的话怎么写呢。。。 
 
 
 
 |  | 
|  2007-9-20 21:12 |  | 
|  | 
 
| flybird2020 初级用户
 
   
 
 
 
 积分 103
 发帖 52
 注册 2007-4-13
 状态 离线
 |  | 
|  2007-9-20 21:14 |  | 
|  | 
 
| dosmania 初级用户
 
   
 
 
 
 积分 172
 发帖 54
 注册 2007-1-2
 状态 离线
 | 
|     『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼主,你标题是”如何列举出由随机数字加随机字母组成的4位组合“ 
但是根据你的描述,你是要两个随机数字+两个随机字母(小写),然后再将这四个字符进行随机组合?!是不是这样先? 
首先,字母大小写没多大关系的 
然后,2楼给的的解决方法不太准确,他怎么就知道获取出来的两个数字和两个字母要怎么组合啊,那是根据他个人主观想法,排列为: 
数字+字母+数字+字母 
最后,根据你的要求,我给出相应的解决方案:
 
以下代码没有考虑随机取到的字母或者数字是否重复,其实取到重复是正常的。
 @echo off
 setlocal EnableDelayedExpansion
 set a=abcdefghijklmnopqrstuvwxyz
 set b=0123456789
 set/a char1=%random%%%26
 set/a char2=%random%%%26
 set/a num1=%random%%%10
 set/a num2=%random%%%10
 set "combine=!a:~%char1%,1!!a:~%char2%,1!!b:~%num1%,1!!b:~%num2%,1!"
 echo 人为地为四个字符指定一个临时组合是: %combine%
 set c=0
 :loop
 set/a rnd=%random%%%4
 if %c% neq 4 (
 if not defined kumho%rnd% (
 set kumho%rnd%=rnd
 set num=%num%%rnd%
 set/a c+=1
 )
 goto loop
 )
 echo 为临时组合中各个字符随机获取排序位置是: %num%
 :: 变量A的值代表临时组合中的第几个字符作为新的随机组合中的第一个字符
 :: 变量B的值代表临时组合中的第几个字符作为新的随机组合中的第二个字符
 :: 变量C的值代表临时组合中的第几个字符作为新的随机组合中的第三个字符
 :: 变量D的值代表临时组合中的第几个字符作为新的随机组合中的第四个字符
 set A=%num:~0,1%
 set B=%num:~1,1%
 set C=%num:~2,1%
 set D=%num:~3,1%
 echo 真正的随机组合是: !combine:~%A%,1!!combine:~%B%,1!!combine:~%C%,1!!combine:~%D%,1!
 pause>nul
 
如果不想获取的随机字母和数字有重复现象,则修改一下前面部分的代码即可。
 @echo off
 setlocal EnableDelayedExpansion
 set a=abcdefghijklmnopqrstuvwxyz
 set b=0123456789
 set/a char1=%random%%%26
 :repeat1
 set/a char2=%random%%%26
 if "%char1%"=="%char2%" goto repeat1
 set/a num1=%random%%%10
 :repeat2
 set/a num2=%random%%%10
 if "%num1%"=="%num2%" goto repeat2
 
 
 Last edited by dosmania on 2007-9-21 at 04:09 AM ]
 
 
 
 
 
 |  | 
|  2007-9-21 03:39 |  | 
|  | 
 
| wudixin96 银牌会员
 
      
 
 
 
 积分 1928
 发帖 931
 注册 2007-1-6
 状态 离线
 |  | 
|  2007-9-21 08:46 |  | 
|  | 
 
| flybird2020 初级用户
 
   
 
 
 
 积分 103
 发帖 52
 注册 2007-4-13
 状态 离线
 |  | 
|  2007-9-21 08:51 |  | 
|  | 
 
| yovie 初级用户
 
   
 
 
 积分 92
 发帖 42
 注册 2007-8-14
 来自 重庆市巫山县
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
原先写过一个大小写字母+数字的生成11位以内的随机组合,你这个和那个同理。 @echo off
 setlocal enabledelayedexpansion
 set str1=abcdefghijklmnopqrstuvwxyz
 set str2=ABCDEFGHIJKLMNOPQRSTUVWXYZ
 set str3=0123456789
 type nul>dic.txt
 set a=
 set n=
 set /p n=你想要生成多少组数据?
 echo 正在生成字典文件,请稍候...
 :start
 set /a a+=1
 :zero
 set dic=
 set /a rd=%random%%%12
 for /l %%i in (1,1,%rd%) do (
 call :rdstr
 set /a rdn=!random!%%3
 call set dic=!dic!%%str:~!rdn!,1%%
 )
 if "!dic!"=="" goto zero
 echo !dic!>>dic.txt
 if "%n%"=="%a%" goto ok
 goto :start
 
 :ok
 echo 创建完成!任意键打开.
 pause>nul
 notepad dic.txt
 endlocal
 goto:eof
 
 :rdstr
 set /a rd=%random%%%26
 set strl=!str1:~%rd%,1!
 set /a rd=%random%%%26
 set stru=!str2:~%rd%,1!
 set /a rd=%random%%%10
 set strn=!str3:~%rd%,1!
 set str=!strl!!stru!!strn!
 goto :eof
 
 
 Last edited by yovie on 2007-9-21 at 09:41 AM ]
 
 
 
 
 |  
                  |  拾人牙慧者!
 |  | 
|  2007-9-21 09:38 |  | 
|  | 
 
| dosmania 初级用户
 
   
 
 
 
 积分 172
 发帖 54
 注册 2007-1-2
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
TO wudixin96:
 多谢鼓励,楼主给的分是少了点,没什么诚意啊,哈哈``开玩笑``
 
 To 8 楼:
 
 8 楼的代码跟楼主要求的根本两回事...
 而且跟我的方法也不尽相同
 ”大小写字母+数字的生成11位以内的随机组合“ 这个生成的随机字符个数是无法控制的,当然最多是11个。总之随便看下都知道跟楼主要求的有很大差别。
 
 Last edited by dosmania on 2007-9-21 at 02:31 PM ]
 
 
 
 
 |  | 
|  2007-9-21 14:30 |  | 
|  | 
 
| wudixin96 银牌会员
 
      
 
 
 
 积分 1928
 发帖 931
 注册 2007-1-6
 状态 离线
 |  | 
|  2007-9-21 14:35 |  | 
|  | 
 
| npgmis 初级用户
 
   
 
 
 
 积分 32
 发帖 17
 注册 2007-9-21
 状态 离线
 |  | 
|  2007-9-21 15:15 |  | 
|  | 
 
| digger 初级用户
 
   游荡的孤魂
 
 
 
 积分 79
 发帖 29
 注册 2007-4-2
 来自 湖南
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我也来一段代码凑热闹: @echo off
 setlocal enabledelayedexpansion
 set str1=0123456789
 set str2=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
 
 :loop
 for /l %%i in (1,1,2) do (
 set /a rnd1=!random!%%10
 set /a rnd2=!random!%%52
 call set str3=!str3! !random!_%%str1:~!rnd1!,1%%
 call set str4=!str4! !random!_%%str2:~!rnd2!,1%%
 )
 set num=0
 for %%i in (%str3% %str4%) do (
 set /a num+=1
 set var_%%i_!num!=%%i_!num!
 )
 for /f "tokens=3 delims=_" %%i in ('set var_') do set /p=%%i<nul
 echo.
 for /f "delims==" %%i in ('set var_') do set %%i=
 set str3=&set str4=
 pause
 goto loop
 
 
 
 
 
 
 |  | 
|  2007-9-21 23:37 |  | 
|  | 
 
| dosmania 初级用户
 
   
 
 
 
 积分 172
 发帖 54
 注册 2007-1-2
 状态 离线
 |  | 
|  2007-9-22 00:01 |  | 
|  | 
 
| digger 初级用户
 
   游荡的孤魂
 
 
 
 积分 79
 发帖 29
 注册 2007-4-2
 来自 湖南
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
效率的高低,并不在于for的多少。如果你的运气不好,连续N次取到的rnd值都是同一个数字的时候,势必会一直执行 goto loop 语句;如果你真的中了大奖,呵呵,传说中的死循环就出现了。
 一直以来,教我的数学老师都不是美女,不玩数字游戏也罢。
 
 
 
 
 |  | 
|  2007-9-22 00:47 |  | 
|  | 
 
| dosmania 初级用户
 
   
 
 
 
 积分 172
 发帖 54
 注册 2007-1-2
 状态 离线
 | 
| 『第 15 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我运气一向很好,就算我运气不好,也不关我事,代码是写给楼主用的,你去问问楼主运气好不好吖``哈哈,这个死 digger,这番话我看着怎么就这么耳熟啊,别跟我说你不是飞扬,哈哈
 看着那些算法也像我上次在群里问你的那些,被我揭穿了,快加分我!!!!
 
 Last edited by dosmania on 2007-9-22 at 03:13 AM ]
 
 
 
 
 |  | 
|  2007-9-22 03:12 |  |