[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 17# went

我想参考这个链接的代码修改,

@echo off
set "max=100"
set "min=40"
set "n=20"
set /a "a=%random%%%(%max%-%min%+1)+%min%"
echo %a%>random.txt
pause

随机数是产生了,问题是如何记录随机数字已经被使用过了。
40~100的随机数字,不重复,不遗漏。
我不知道如何利用上面的模版进行修改?

TOP

这里面有没有你需要的http://www.bathome.net/viewthread.php?tid=55180

TOP

10000是没问题的,不过效率明显下降。

TOP

还有个问题,能存储多少变量?

TOP

回复 13# newswan
解决了我的代码可能会出现重复数字的问题,但in ('set ')效率不高的问题还是个遗憾。

TOP

  1. for /f "usebackq delims=" %%a in (`dir /b *.txt`) do (
  2.     call :f "%%a"
  3. )
  4. for /f "usebackq tokens=2 delims==" %%a in (`set _`) do (
  5.     echo %%a
  6. )
  7. goto :END
  8. :f
  9. set n=%random%
  10. if defind _%n% goto :f
  11. set _%n%=%~1
  12. goto :eof
复制代码
random 范围是32768
不要求连续,只要不重复就行

TOP

回复 11# qixiaobin0715

我只会这个的递归写法,非递归我写不出来。
https://blog.csdn.net/weixin_39910711/article/details/100692318

TOP

所学有限,不懂,你可以试试嘛。成功的话可以分享一下。

TOP

回复 9# qixiaobin0715

如果采取深度搜索的算法速度是否可以快一点,就是设置一个标志位,标志空的时候可以分配数字,
标志满的时候这个数字就不能分配。

TOP

实际上这种效率不高,超过10000文件,最好想别的办法。

TOP

n先取10,试试

TOP

显示所有变量名以#开头的变量。在3~4行之间加入set #,pause一下,试试

TOP

回复 4# qixiaobin0715


    in ('set #') 这个代码是什么意思啊? 我这边报环境变量错误。

TOP

本帖最后由 qixiaobin0715 于 2021-5-24 16:09 编辑

为了保险起见,可以多加1个!random!:set #!random!!random!=%%a

TOP

笨办法,如果文件数为n,取随机数字:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,!n!) do set #!random!=%%a
  4. for /f "tokens=2 delims==" %%i in ('set #') do echo,%%i
  5. pause
复制代码

TOP

返回列表