标题: [数值计算] [已解決]批处理如何产生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
- @echo off&setlocal enabledelayedexpansion
- set num=1
- for /l %%a in (100,1,200) do set ".!random!!random!!random!=%%a"
- for /f "delims== tokens=2" %%a in ('set .') do (
- echo %%a
- set /a num=!num!+1
- if "!num!"=="11" goto end
- )
- :end
- pause
复制代码
作者: smallpigs 时间: 2010-10-22 11:53
可以解釋一下嗎,不是太懂set ".!random!!random!!random!=%%a" 和('set .')不是太明白
作者: TX_kakashi 时间: 2010-10-22 11:59
- set ".!random!!random!!random!=%%a"
复制代码
这句的意思是给100~200的数都标上一个编号,编号为随机数- for /f "delims== tokens=2" %%a in ('set .') do (
- echo %%a
- set /a num=!num!+1
- if "!num!"=="11" goto end
- )
复制代码
这句的意思是用set.列出所有变量开头字母为"."的变量,也就是提取刚才所编号的那些数字,并抽取前10个数字。
[ 本帖最后由 TX_kakashi 于 2010-10-22 12:03 编辑 ]
作者: wc726842270 时间: 2010-10-22 19:56 标题: 回复 4楼 的帖子
学习了,看来变量的用法真是神奇啊,居然可以这么用,唉!!!!
作者: cui1988wei 时间: 2010-10-22 21:19
- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1 1 10) do set /a x=!random!%%% 100 +100&echo !x!
- endlocal
复制代码
[ 本帖最后由 cui1988wei 于 2010-10-22 21:20 编辑 ]
作者: Batcher 时间: 2010-10-25 20:42 标题: 回复 6楼 的帖子
1、无法满足100到200之间
2、无法保证不重复
作者: lvsehuaxue 时间: 2010-10-27 15:22
- @echo off&setlocal enabledelayedexpansion
- :loop1
- set n=0
- :loop
- set /a var=%random%%%101+100
- set /a n+=1
- set w%n%=%var%
- if %n% lss 10 goto loop
- for /l %%a in (1 1 9) do (
- set /a m=%%a+1
- for /l %%b in (!m! 1 10) do (
- if !w%%a!==!w%%b! goto loop1
- )
- )
- for /l %%c in (1 1 10) do (
- echo !w%%c!
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |