উত্তর:
%RANDOM%
আপনাকে 0 এবং 32767 এর মধ্যে একটি এলোমেলো নম্বর দেয়।
এর মত একটি এক্সপ্রেশন ব্যবহার করে SET /A test=%RANDOM% * 100 / 32768 + 1
আপনি নিজের পছন্দমতো যে কোনও কিছুতে ব্যাপ্তি পরিবর্তন করতে পারেন (এখানে পরিসীমা [1… 100] [0… 32767] এর পরিবর্তে)।
SETLOCAL ENABLEDELAYEDEXPANSION
এবং এর !RANDOM!
পরিবর্তে ব্যবহার %RANDOM%
করা উচিত।
%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; শুধু সেট minval
এবং maxval
উপযুক্ত মান প্রথমে।
% র্যান্ডোম% আপনাকে 0 এবং 32767 এর মধ্যে একটি এলোমেলো সংখ্যা দেয়।
আপনি এর সাথে সংখ্যার ব্যাপ্তি নিয়ন্ত্রণ করতে পারেন:
set /a num=%random% %%100
- 0 ~ 99 এর মধ্যে সংখ্যা তৈরি করবে।
এইটা:
set /a num=%random% %%100 +1
- 1 ~ 100 এর মধ্যে সংখ্যা তৈরি করবে।
%random% %%100
কোনও ম্যাজিক বাক্যবিন্যাস নয় তবে আসলে %random % %% 100
একটি কম স্থানের সাথে, যেখানে %%
কেবলমাত্র একটি পালিয়ে যাওয়া %
যা
আপনি সম্ভবত বেশ কয়েকটি এলোমেলো নম্বর পেতে চাইবেন এবং প্রত্যেকের জন্য একটি আলাদা পরিসর নির্দিষ্ট করতে সক্ষম হতে পারেন, সুতরাং আপনার কোনও ফাংশন সংজ্ঞায়িত করা উচিত। আমার উদাহরণে, আমি 25 থেকে 30 এর মাধ্যমে সংখ্যা উত্পন্ন করি call:rand 25 30
। এবং ফলাফল RAND_NUM
যে ফাংশন প্রস্থান পরে হয় ।
@echo off & setlocal EnableDelayedExpansion
for /L %%a in (1 1 10) do (
call:rand 25 30
echo !RAND_NUM!
)
goto:EOF
REM The script ends at the above goto:EOF. The following are functions.
REM rand()
REM Input: %1 is min, %2 is max.
REM Output: RAND_NUM is set to a random number from min through max.
:rand
SET /A RAND_NUM=%RANDOM% * (%2 - %1 + 1) / 32768 + %1
goto:EOF
@echo off & setLocal EnableDelayedExpansion
for /L %%a in (1 1 100) do (
echo !random!
)
আপনি এটি এইভাবে করতে পারেন, যার প্রয়োজন নেই EnableDelayedExpansion
:choosenamea
cls
set /a choosemname=%random%
if %choosemname% GTR %max% goto choosenameb
if %choosemname% LSS %min% goto choosenameb
goto gotnamenow
কোথায় max
আপনার সর্বোচ্চ এবং min
আপনার সর্বনিম্ন। এটি খুব কার্যকর নয় যেহেতু আপনার পরিসর খুব কম হলে প্রচুর রাউন্ড নিতে পারে। এছাড়াও, এটি 32767 এর চেয়ে বেশি সংখ্যার জন্য কাজ করবে না।
ধরা যাক আপনি 1-5 নম্বর চান; আপনি নিম্নলিখিত ব্যবহার করতে পারে:
:LOOP
set NUM=%random:~-1,1%
if %NUM% GTR 5 (
goto LOOP )
goto NEXT
অথবা আপনি ব্যবহার করতে পারেন: in 1,1 এর জায়গায়: ~ -1,1। : ~ -1,1 প্রয়োজন হয় না, তবে এটি সঠিক পরিসরে আঘাত করতে যে পরিমাণ সময় নেয় তা হ্রাস করে। ধরা যাক আপনি 1-50 নম্বর চান, আমাদের 2 ডিজিট এবং 1 ডিজিটের মধ্যে সিদ্ধান্ত নেওয়া দরকার। ব্যবহার করুন:
:LOOP
set RAN1=%random:~-1,1%
if %RAN1% GTR 5 (
goto 1 )
if %RAN1%==5 (
goto LOOP )
goto 2
:1
set NUM=%random:~-1,1%
goto NEXT
:2
set NUM=%random:~-1,2%
goto NEXT
আপনি 1-1000 এর মতো বড় রেঞ্জগুলির মধ্যে সিদ্ধান্ত নিতে এই অ্যালগরিদমে আরও যুক্ত করতে পারেন।
goto
যখন উপরে একটি লাইনার রাখতে পারেন তবে কেন আপনি ব্যবহার করবেন ? অন্যান্য সমাধান আপনাকে স্পষ্টভাবে পরিসীমা নির্দিষ্ট করতে দেয়। আপনার কোড এর সুবিধা কি?
set /a number=%random% %% [maximum]-[minimum]
উদাহরণ "
set /a number=%random% %% 100-50
100 এবং 50 এর মধ্যে একটি এলোমেলো সংখ্যা দেবে you আপনি যদি ব্যাচের স্ক্রিপ্টে লাইনটি ব্যবহার না করেন তবে কেবল অপারেন্ড হিসাবে এক শতাংশ চিহ্ন ব্যবহার করবেন তা নিশ্চিত হন!
@echo off
title Professional Hacker
color 02
:matrix
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%
goto matrix
@(IF not "%1" == "max" (start /MAX cmd /Q /C %0 max&X)ELSE set C=1&set D=2&wmic process where name="cmd.exe" CALL setpriority "REALTIME">NUL)&CLS
:Y
title %random%6%random%%random%%random%%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%&color %D%&ECHO %random%%C%%random%%random%%random%%random%6%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%&(IF %C% EQU 46 (TIMEOUT /T 1 /NOBREAK>nul&set C=1&CLS&IF %D% EQU 9 (set D=1)ELSE set /A D=%D%+1)ELSE set /A C=%C%+1)&goto Y
একাধিক আইএফ স্টেটমেন্ট এবং প্রচুর পরিমাণে ((())) দিয়ে সরলীকৃত
এবং যারা সবসময় একটি কালো পর্দা চান না তাদের জন্য পুরোপুরি এলোমেলো হয়ে উঠুন।
@(IF not "%1" == "max" (start /MAX cmd /Q /C %0 max&X)ELSE set A=0&set C=1&set V=A&wmic process where name="cmd.exe" CALL setpriority "REALTIME">NUL)&CLS
:Y
(IF %A% EQU 10 set A=A)&(IF %A% EQU 11 set A=B)&(IF %A% EQU 12 set A=C)&(IF %A% EQU 13 set A=D)&(IF %A% EQU 14 set A=E)&(IF %A% EQU 15 set A=F)
(IF %V% EQU 10 set V=A)&(IF %V% EQU 11 set V=B)&(IF %V% EQU 12 set V=C)&(IF %V% EQU 13 set V=D)&(IF %V% EQU 14 set V=E)&(IF %V% EQU 15 set V=F)
(IF %A% EQU %V% set A=0)
title %A%%V%%random%6%random%%random%%random%%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%&color %A%%V%&ECHO %random%%C%%random%%random%%random%%random%6%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%&(IF %C% EQU 46 (TIMEOUT /T 1 /NOBREAK>nul&set C=1&CLS&SET /A A=%random% %%15 +1&SET /A V=%random% %%15 +1)ELSE set /A C=%C%+1)&goto Y
এটি উভয় এলোমেলোভাবে পর্দার রঙ পরিবর্তন করবে।
আপনি যদি কিছু বড় মানের দ্বারা ভাগ করে নেন তবে আপনি একের পর এক বিশাল অঙ্কের নকল পাবেন। আপনাকে যা করতে হবে তা হল% RANDOM% মানের মডুলো নেওয়া:
@echo off
REM
SET maxvalue=10
SET minvalue=1
SETLOCAL
SET /A tmpRandom=((%RANDOM%)%%(%maxvalue%))+(%minvalue%)
echo "Tmp random: %tmpRandom%"
echo "Random: %RANDOM%"
ENDLOCAL
এখানে আমি আপনার জন্য একটি উদাহরণ তৈরি করেছি, এটি একটি ডায়ালগ প্রদর্শন করবে যা আপনাকে 1-10 নম্বর নির্বাচন করার জন্য জিজ্ঞাসা করবে, আপনি নির্বাচিত সংখ্যার উপর নির্ভর করে এটি আপনার নামের একটি ব্যাচ ফাইলটিতে একটি এলোমেলো সংখ্যার উদাহরণ উত্পন্ন করবে। আপনি যদি "1" নির্বাচন করেন তবে আপনি এলোমেলোভাবে 1 সংখ্যার উদাহরণ পাবেন। আপনি যদি "10" নির্বাচন করেন তবে আপনি এলোমেলো 10 সংখ্যার উদাহরণ পাবেন।
@echo off
color f0
set /p "FileName= Enter Filename (Without Extension) : "
echo @echo off >> %FileName%.bat
echo File Created!
pause
cls
:CommandLine
set /p "calc= ~%ComputerName%: Enter a number to recieve the amount of random digits :"
if %calc%==genrand_help goto GenerateRandomHelp
if %calc%==1 echo echo %%RANDOM:~-1%% >> %FileName%.bat
if %calc%==2 echo echo %%RANDOM:~-1%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==3 echo echo %%RANDOM:~-1%%%%RANDOM:~-1%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==4 echo echo %%RANDOM:~-1%%%%RANDOM:~-1%%%%RANDOM:~-1%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==5 echo echo %%Random%% >> %FileName%.bat
if %calc%==6 echo echo %%Random%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==7 echo echo %%Random%%%%RANDOM:~-1%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==8 echo echo %%Random%%%%RANDOM:~-1%%%%RANDOM:~-1%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==9 echo echo %%Random%%%%RANDOM:~-1%%%%RANDOM:~-1%%%%RANDOM:~-1%%%%RANDOM:~-1%% >> %FileName%.bat
if %calc%==10 echo echo %%Random%%%%Random%% >> %FileName%.bat
goto CommandLine
এখন ডস রংধনু এর সমস্ত রং বৈশিষ্ট্যযুক্ত
@(IF not "%1" == "max" (start /MAX cmd /Q /C %0 max&X)
ELSE set C=1&set D=A&wmic process where name="cmd.exe" CALL setpriority "REALTIME">NUL)&CLS
:Y
set V=%D%
(IF %V% EQU 10 set V=A)
& (IF %V% EQU 11 set V=B)
& (IF %V% EQU 12 set V=C)
& (IF %V% EQU 13 set V=D)
& (IF %V% EQU 14 set V=E)
& (IF %V% EQU 15 set V=F)
title %random%6%random%%random%%random%%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%&color %V%&ECHO %random%%C%%random%%random%%random%%random%6%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%
&(IF %C% EQU 46 (TIMEOUT /T 1 /NOBREAK>nul&set C=1&CLS&IF %D% EQU 15 (set D=1)ELSE set /A D=%D%+1)
ELSE set /A C=%C%+1)&goto Y
এবং কেবল সম্পূর্ণরূপে এলোমেলোভাবে অর্ডারের মোট অভাব: SET /A V=%random% %%15 +1
@(IF not "%1" == "max" (start /MAX cmd /Q /C %0 max&X)ELSE set C=1&set V=A&wmic process where name="cmd.exe" CALL setpriority "REALTIME">NUL)&CLS
:Y
(IF %V% EQU 10 set V=A)&(IF %V% EQU 11 set V=B)&(IF %V% EQU 12 set V=C)&(IF %V% EQU 13 set V=D)&(IF %V% EQU 14 set V=E)&(IF %V% EQU 15 set V=F)
title %V%%random%6%random%%random%%random%%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%&color %V%&ECHO %random%%C%%random%%random%%random%%random%6%random%9%random%%random%%random%%random%%random%%random%%random%%random%%random%&(IF %C% EQU 46 (TIMEOUT /T 1 /NOBREAK>nul&set C=1&CLS&SET /A V=%random% %%15 +1)ELSE set /A C=%C%+1)&goto Y