0

変数 %random% を使用してランダムなトランプを選択するバッチ ファイルを作成しました。バッチ スクリプトは、%random% が 1 から 13 の間になるまでループし続け、スーツに対して再び実行します。次に、数値として設定された変数をテキストに変換すると、バッチ ファイルは次のようになります: ハートの 4 つ、またはスペードのキング。唯一の問題は、永遠にかかることです! CMD.exeを開いて入力すると

Echo %random%

数が 1 から 4 になるまでそれを行うと、永遠にそこにいることができます。バッチファイルに入れてループしても、20秒くらいかかります。おそらく乱数生成の前に検索を絞り込むことで、時間を短縮する方法はありますか? よくわかりません。それが役立つ場合、または私を理解できない場合のために、コードは次のとおりです。

@echo off
:loop
cls
echo generating card...
set num=%random%
if /i %num% GTR 13 goto loop
if /i %num% LSS 1 goto loop
goto next
:next
set suit=%random%
if /i %suit% GTR 4 goto next
if /i %suit% LSS 1 goto next
goto next2
:next2
if %num%==11 set num=jack
if %num%==12 set num=queen
if %num%==13 set num=king
goto next3
:next3
if %suit%==1 set suiter=Hearts
if %suit%==2 set suiter=Diamonds
if %suit%==3 set suiter=Clubs
if %suit%==4 set suiter=Spades
goto ech
:ech
echo %num% of %suiter%
echo.
echo.
echo.
echo press any key to choose again
pause >nul
goto loop
4

2 に答える 2

2

ちょっとした計算を使用して、最初の試行で 1 から 13 までの数値を取得できます。

set /a num=13*%random%/32768+1 

1と4も同じこと

set /a suit=4*%random%/32768+1

BATCHスクリプトでランダムを使用する方法を参照してください。- あなたが求めているものと非常によく似ています

于 2013-09-27T22:38:57.953 に答える