Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批文件字槽机_Batch File - Fatal编程技术网

Batch file 批文件字槽机

Batch file 批文件字槽机,batch-file,Batch File,所以我在网上找到了这一批,并试着玩了一段时间,我对这一批非常陌生,并试着看一些教程,但却一无所获。所以我要做的是制作一个单词/标签生成器,它在其中选择一个半随机标签。我想让它像一个彩票/老虎机一样,你有普通奖、普通奖、不寻常奖、稀有奖和超级稀有奖 这就是我目前所拥有的 test.bat文件 @echo off set /a rnd=%random%%%10 for /f "tokens=1,2" %%a in (list.txt) do if %rnd%==%%a

所以我在网上找到了这一批,并试着玩了一段时间,我对这一批非常陌生,并试着看一些教程,但却一无所获。所以我要做的是制作一个单词/标签生成器,它在其中选择一个半随机标签。我想让它像一个彩票/老虎机一样,你有普通奖、普通奖、不寻常奖、稀有奖和超级稀有奖

这就是我目前所拥有的

test.bat文件

    @echo off

    set /a rnd=%random%%%10

    for /f "tokens=1,2" %%a in (list.txt) do if %rnd%==%%a  echo %%b

    pause
List.txt

1 Yellow_Star
2 Yellow_Star
3 Rare_Star
4 Yellow_Star
5 Uncommon_Star
6 Yellow_Star
7 Common_Star
8 Yellow_Star
9 Silver_Star
10 Yellow_Star

所以我试着在黄星概率更高的列表中这样做,但我想避免这样做,而在银星概率为1/100的情况下,黄星概率更高,等等。

如果创建一个包含100个条目的
list.txt
,则可以使用现有代码

1个条目为银星-(1/100)

10个条目为黄色(10/100)

等等

这是一种“务实的暴力”方法:)只是为了强调解决问题的方法不止一种。

将jwdonahues建议快速“翻译”为批处理代码:

@echo off
setlocal 

:loop
set /a "prize=%random% %% 100 +1" & REM generates 1...100
REM echo prize=%prize%

if %prize% leq 100 set star=common
if %prize% leq 40 set star=yellow
if %prize% leq 20 set star=silver
if %prize% leq 10 set star=uncommon
if %prize% leq 1 set star=rare

echo You earned a %star% star!
pause
goto :loop
if%prize%leq 100 set star=common
可以简化为
set star=common
,但为了更好地理解,我保留了长版本

这给了你一个稀有恒星1%的差价,不寻常恒星9%(10-1),银恒星10%(20-10),黄恒星20%(40-20),普通恒星60%(100-40)。根据需要调整数字


(注意,只是为了防止任何“how random is%random%”参数:数字并非完全均匀分布,但你需要数千次跑步才能了解这一点。记住,即使是硬币和骰子也不能提供均匀分布)

StackOverflow为那些报告在使用提供的脚本/代码运行/修复问题时遇到困难的人提供帮助和建议。如果没有你的脚本/代码,以及对问题的清晰解释,(你都没有),你的问题就离题了。哦,对此我很抱歉,我不知道是否有人可以帮助我,或者为我指出一个我在谷歌上找不到的方向。请阅读,然后回答。考虑生成一个随机数模100,然后测试它是否大于或等于期望的阈值。感谢提示,是的,我试图避免那样做,哈哈,我想那样做。我只是不知道是否有一种方法可以像设置Silver_Star 1/100等那样。我正在网上做一些研究,以找到类似的东西,但它的编码有点不同,然后我也在使用。@jwdonahue有一个更好的主意-在文件中添加一个递增的百分比,并使用一个比支票更小的百分比。我如何做那个百分比的事情?我查看了这里和其他地方的许多帮助线程,并尝试了使用批处理文件百分比的google,但我找不到任何东西?我不打算编辑我的答案并给出解释,因为我的代码语法将是错误的,但@jwdonahue提出的想法是,生成一个介于1和100之间的随机数,然后使用LEQ(小于或等于)查找文本文件中的值。与文件中的数字1到10不同,您的第一行=10(表示10%),下一行可能是60(=50%,因为它小于60,但大于10),下一行可能是90(=30%,因为它在60到90之间).这是一般的想法,但我无法编写它。嗯..不必费心学习这么糟糕的语言!非常感谢,我从来都不知道leq,我在谷歌上看到的每件事也没有提到过它。再次感谢。你可能对它感兴趣。请记住:你可以在每个命令上获得帮助,例如
if/?