3

Windows コマンド ラインで、数字をランダムに再配置することは可能ですか?

たとえば、バッチ ファイルに次のロジックがあり、s からランダムに数字を選択します。これにより、アイテムの繰り返しが許可されます。アイテムが繰り返されないようにしたいと思います。

@echo off

set i=
set s=12345678
set m=0
:loop
set /a n=%random% %% 8
call set i=%i%%%s:~%n%,1%%
set /a m=m+1
if not %m%==8 goto loop:
echo %i%

pause

実際の出力: 83254646

望ましい出力は次のようになります: 83254176

ありがとう、ジョエル

4

3 に答える 3

3

以下は、ソース文字列から数字をランダムに選択し、ソースからその数字を削除します。比較的遅い GOTO を回避し、最小数の繰り返しを実行します。

@echo off
setlocal enableDelayedExpansion
set "s=12345678"
set "i="
for /l %%N in (8 -1 1) do (
  set /a "n1=!random! %% %%N, n2=n1+1"
  for /f "tokens=1,2" %%A in ("!n1! !n2!") do (
    set "i=!i!!s:~%%A,1!"
    set "s=!s:~0,%%A!!s:~%%B!"
  )
)
echo !i!
pause
于 2013-10-20T03:30:52.530 に答える