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

[数值计算] 求规定范围的随机数所有排序

请求各位高手帮忙!
下面是代码的一段:
@echo off&setlocal ENABLEDELAYEDEXPANSION
set /a n=8
:random
set /a "a=%random%%%%n%+1"
if defined #%a% goto random
set /a "#%a%=%a%"
set "var=%var%!#%a%!"
set /a m+=1
if %m% equ %n% goto a
goto random
:a
...
请问如何反复调用:random ,求出所有的%var% ,也就是排列组合问题,求出所有可能的排序。(如,12345678,12345687,12345876。。。):random 只能产生一组排序,希望能通过他产生n*(n-1)...*2*1 组排序。不产生临时文件最好,谢谢!

[ 本帖最后由 zhouyongjun 于 2008-11-4 17:36 编辑 ]

提问的时候最好能够给出具体的例子,比如n=3,结果如何,n=4,结果如何,等等。
而不是只贴一段代码让别人帮你改错,有可能的你的代码思路会把别人带到沟里。又或者别人看了你的代码,思路受到限制,而忽略了更好的方法。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

随便定义的变量而已,高兴话,还可以换成其它字符。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

要用随机的方法列出所有排列几乎是不可能,因为随机数重复太多,特别是当数目大了之后。
变化的个数比较难,下面的也是转来的别人的代码。

如果是固定的数目,如 4 个。方法如下:
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set "sr1=1 2 3 4 "
  4. for %%a in (!sr1!) do (set sr2=!sr1:%%a =!
  5.  for %%b in (!sr2!) do (set sr3=!sr2:%%b =!
  6.   for %%c in (!sr3!) do (set sr4=!sr3:%%c =!
  7.    echo %%a %%b %%c !sr4!
  8. ) ) )
  9. pause
复制代码

TOP

回复 6楼 的帖子

除了这个之外,还有一个递归算法,效率要高一些。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表