在我的代碼*中,我有一個簡單的隨機數生成器和幾個ifs來檢查生成器生成的數字。但是,即使在CMD的另一個實例中運行,在另一個批處理文件中以及此批處理文件的另一個實例中運行時,它仍然會生成相同的數字:4.每次。我沒有在循環中使用此代碼,儘管它可以循環回到其部分。然而,我確實有另一行代碼在另一組參數中產生另一個數字,這些參數很好。在批量隨機數生成器中重複應答
*我的代碼:
:genClass
set /a class=(5 * !random!)/32768 + 1
if !class!==1 (
set class=Knight
goto genKnightArmor
)
if !class!==2 (
set class=Warrior
goto genWarriorArmor
)
if !class!==3 (
set class=Archer
goto genArcherArmor
)
if !class!==4 (
set class=Thief
goto genThiefArmor
)
if !class!==5 (
set class=Mage
goto genMageArmor
)
:genKnightArmor
set /a armor=(2 * !random!)/32768 + 1
if !armor!==1 set armor=Light Armor
if !armor!==2 set armor=Heavy Armor
echo !name!
echo !gender!
echo !class!
echo !armor!
pause
exit
:genWarriorArmor
set /a armor=(2 * !random!)/32768 + 1
if !armor!==1 set armor=Light Armor
if !armor!==2 set armor=Heavy Armor
echo !name!
echo !gender!
echo !class!
echo !armor!
pause
exit
:genArcherArmor
set /a armor=(2 * !random!)/32768 + 1
if !armor!==1 set armor=Light Armor
if !armor!==2 set armor=Heavy Armor
echo !name!
echo !gender!
echo !class!
echo !armor!
pause
exit
:genThiefArmor
set /a armor=(2 * !random!)/32768 + 1
if !armor!==1 set armor=Light Armor
if !armor!==2 set armor=Heavy Armor
echo !name!
echo !gender!
echo !class!
echo !armor!
pause
exit
:genMageArmor
set /a armor=(3 * !random!)/32768 + 1
if !armor!==1 set armor=Light Armor
if !armor!==2 set armor=Heavy Armor
if !armor!==3 set armor=Robes and Hood
echo !name!
echo !gender!
echo !class!
echo !armor!
pause
exit
編輯:隨着Monacraft的解決方案,現在產生了一些2,也沒有產生錯誤的盔甲類型。但是,生成該類的代碼仍然混亂,如前所述,繼續生成數字2.
編輯:我編輯了代碼再次更改算術和字符串變量名稱。儘管類生成器現在不斷生成數字3,但這並沒有解決問題。我注意到,在編輯時,生成器會生成一個新數字,但在第一代之後,它會生成相同的數字。
編輯:修正了我的代碼中的錯誤。如匹配變量並將隨機數發生器中的數字4改爲5.
沒有,整數運算工作正常 - 它應該給1和4之間的值。我同意使用模數要簡單得多,但原數學應該可以工作。 – dbenham
謝謝你的回答!它現在正在工作,雖然它不能生成數字:4(小偷)......有什麼具體原因?編輯:沒關係,犯了一個錯字! – BatchHole