Board logo

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

作者: smallpigs    时间: 2010-10-22 11:24     标题: [已解決]批处理如何产生100-200之间不重复的的随机数?

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

[ 本帖最后由 smallpigs 于 2010-10-25 15:25 编辑 ]
作者: TX_kakashi    时间: 2010-10-22 11:46

  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
复制代码

作者: smallpigs    时间: 2010-10-22 11:53

可以解釋一下嗎,不是太懂set ".!random!!random!!random!=%%a"   和('set .')不是太明白
作者: TX_kakashi    时间: 2010-10-22 11:59

  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 编辑 ]
作者: wc726842270    时间: 2010-10-22 19:56     标题: 回复 4楼 的帖子

学习了,看来变量的用法真是神奇啊,居然可以这么用,唉!!!!
作者: cui1988wei    时间: 2010-10-22 21:19

  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 编辑 ]
作者: Batcher    时间: 2010-10-25 20:42     标题: 回复 6楼 的帖子

1、无法满足100到200之间
2、无法保证不重复
作者: lvsehuaxue    时间: 2010-10-27 15:22

  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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2