Board logo

标题: 如何输出3位不重复的数字 [打印本页]

作者: diangongban     时间: 2007-7-27 19:22    标题: 如何输出3位不重复的数字

各位老师,我想把0到9这10个数取任意3个数的不重复排列后保存到一个.txt文件。

[ Last edited by bjsh on 2007-7-31 at 12:36 AM ]
作者: wudixin96     时间: 2007-7-27 21:05
呵呵,弄个简陋的
@echo off
set /a a=%random%%%10
:bb
set /a b=%random%%%10
if %b%==%a% goto bb
:cc
set /a c=%random%%%10
if %c%==%a% (goto cc) else (if %c%==%b% goto cc)

echo %a%  %b%  %c%
pause

作者: wudixin96     时间: 2007-7-27 21:10
抱歉,没看懂楼主的意思,见笑了

楼主的意思是排列组合问题。

但我现在已经全忘光了,不好意思。

[ Last edited by wudixin96 on 2007-7-28 at 10:02 AM ]
作者: diangongban     时间: 2007-7-28 08:57
谢谢wudixin96老师的回复,也是我没有表达清楚。
我的意思是0123456789这10个数取3个数3位数的全排列,比如:123 132 321。。。。213 231 。。。一直到9不重复。将这些3位数保存到一个.txt里。

就是彩票排列3

[ Last edited by diangongban on 2007-7-28 at 09:17 AM ]
作者: ccwan     时间: 2007-7-28 10:46
你是否要这种效果?
@echo off
for /l %%i in (0 1 9) do (
    for /l %%j in (0 1 9) do (
        for /l %%k in (0 1 9) do (
            if not %%i==%%j if not %%j==%%k if not %%k==%%i echo %%i%%j%%k>>1.txt
        )
    )
)
start 1.txt
要是认为123和213是一种组合,不允许出现的话,可以这样
@echo off
for /l %%i in (0 1 9) do (
    for /l %%j in (%%i 1 9) do (
        for /l %%k in (%%j 1 9) do (
            if not %%i==%%j if not %%j==%%k if not %%k==%%i echo %%i%%j%%k>>1.txt
        )
    )
)
start 1.txt

作者: diangongban     时间: 2007-7-28 15:03
谢谢ccwan

          有点意思了,少了001 110 022 220。。。111 222 。。。。就是就是彩票排列3的所有组合。

[ Last edited by diangongban on 2007-7-28 at 03:05 PM ]
作者: wudixin96     时间: 2007-7-28 15:06
什么?楼主的意思不是从0~9十位数中随机取得3个数字(不重复)吗,再

组成一个三位数。

001等,有重复啊。
作者: ccwan     时间: 2007-7-28 15:22
晕死!要重复干嘛说不重复排列呢?
@echo off
for /l %%i in (0 1 9) do (
    for /l %%j in (0 1 9) do (
        for /l %%k in (0 1 9) do (
            echo %%i%%j%%k>>1.txt
        )
    )
)
start 1.txt

作者: diangongban     时间: 2007-7-29 09:50
谢谢ccwan
问题解决