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

[数值计算] [已解決]批处理如何产生100-200之间不重复的的随机数?

產生100-200之間的隨機數,一共產生10個數,不希望有重複的!希望高手指點!

[ 本帖最后由 smallpigs 于 2010-10-25 15:25 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off&setlocal enabledelayedexpansion
  2. set num=1
  3. for /l %%a in (100,1,200) do set ".!random!!random!!random!=%%a"
  4. for /f "delims== tokens=2" %%a in ('set .') do (
  5.      echo %%a
  6.      set /a num=!num!+1
  7.      if "!num!"=="11" goto end
  8. )
  9. :end
  10. pause
复制代码
1

评分人数

TOP

可以解釋一下嗎,不是太懂set ".!random!!random!!random!=%%a"   和('set .')不是太明白

TOP

  1. set ".!random!!random!!random!=%%a"
复制代码
这句的意思是给100~200的数都标上一个编号,编号为随机数
  1. for /f "delims== tokens=2" %%a in ('set .') do (
  2.      echo %%a
  3.      set /a num=!num!+1
  4.      if "!num!"=="11" goto end
  5. )
复制代码
这句的意思是用set.列出所有变量开头字母为"."的变量,也就是提取刚才所编号的那些数字,并抽取前10个数字。

[ 本帖最后由 TX_kakashi 于 2010-10-22 12:03 编辑 ]

TOP

回复 4楼 的帖子

学习了,看来变量的用法真是神奇啊,居然可以这么用,唉!!!!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 10) do set /a x=!random!%%% 100 +100&echo !x!
  3. endlocal
复制代码

[ 本帖最后由 cui1988wei 于 2010-10-22 21:20 编辑 ]

TOP

回复 6楼 的帖子

1、无法满足100到200之间
2、无法保证不重复
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. :loop1
  3. set n=0
  4. :loop
  5. set /a var=%random%%%101+100
  6. set /a n+=1
  7. set w%n%=%var%
  8. if %n% lss 10 goto loop
  9. for /l %%a in (1 1 9) do (
  10.     set /a m=%%a+1
  11.     for /l %%b in (!m! 1 10) do (
  12.         if !w%%a!==!w%%b! goto loop1
  13.    )
  14. )
  15. for /l %%c in (1 1 10) do (
  16.     echo !w%%c!
  17. )
  18. pause
复制代码

TOP

返回列表