Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Random 随机数公式返回相同数量的批次_Random_Batch File_Cmd - Fatal编程技术网

Random 随机数公式返回相同数量的批次

Random 随机数公式返回相同数量的批次,random,batch-file,cmd,Random,Batch File,Cmd,我试图在1和一个变量之间做一个随机数,这个变量在程序每次运行时都会改变。到目前为止,我使用的是: 设置/A结果=%random%*%var%/32768+1 但每次我重新运行批处理文件时,它都返回相同的数字,人们知道发生了什么吗 提前感谢对于或如果代码块,您必须在中使用延迟扩展。请尝试以下方法: set /a result=(%random% %% %var%) + 1 在SET/A命令中,不需要将var括在百分比符号中;此表格应解决与砌块内部/外部正常膨胀相关的所有问题: SET /A re

我试图在1和一个变量之间做一个随机数,这个变量在程序每次运行时都会改变。到目前为止,我使用的是: 设置/A结果=%random%*%var%/32768+1

但每次我重新运行批处理文件时,它都返回相同的数字,人们知道发生了什么吗


提前感谢

对于或
如果
代码块,您必须在
中使用延迟扩展。

请尝试以下方法:

set /a result=(%random% %% %var%) + 1

SET/A
命令中,不需要将
var
括在百分比符号中;此表格应解决与砌块内部/外部正常膨胀相关的所有问题:

SET /A result=%random%*var/32768+1
但是,如果上一个命令位于块内,则应为此块更改它(并启用延迟扩展):

如果前面的解决方案仍然不起作用,我敢打赌您正在定义一个名为
random
的变量!这将防止在内部创建
%random%
,并始终返回分配给它的值


Antonio

您应该为正在使用的语言添加一个标记。它不在for或if块中,在我将其更改为延迟扩展后,它仍然无法在我的系统中运行%random%只是随着时间的推移而增加,因此不是特别随机的。如果您每次运行时都希望得到非常不同的结果,那么使用模将产生更多的随机结果。否
%random%
具有通过
%random%*var/32768
保存的特定分布。模运算符更改此分布并创建一个不同的分布,该分布比原始分布“随机性更小”。当我在批处理文件中使用%random%并运行它两到三次时,每次只会得到一个稍高的数字。我猜这与%random%的生成方式有关。我建议使用模的原因是,即使是%random%中的一个小变化也会导致完全不同的输出。我假设模并不像适当的方法那样随机,但我相信它对小的%var%来说并不重要。在任何情况下,每次我运行user2035296和您的代码时都会生成相同的数字。我的代码可以工作,只要你能容忍数字的轻微不完美分布。我刚刚编写了一个批处理文件,它在三行中显示
%random%
;我双击它并得到这个结果:
301223438426
。然后我再次运行它并得到这个结果:
17735121728635
。如果您使用%random%没有得到真正随机的结果,那么您的系统可能有问题……在同一批处理文件中写入3次就可以了。当我快速连续运行一个批处理文件3次时,问题就出现了。
SET /A result=!random!*var/32768+1