Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/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
Java 这个算法可行吗?在固定时间段内随机化执行时间_Java_Algorithm_Testing - Fatal编程技术网

Java 这个算法可行吗?在固定时间段内随机化执行时间

Java 这个算法可行吗?在固定时间段内随机化执行时间,java,algorithm,testing,Java,Algorithm,Testing,我绞尽脑汁,试图为以下场景想出一个简单的方法(算法): 我想进行24小时的测试。 有三种测试。 每个测试必须在一定的时间百分比内执行。 每个测试必须随机花费一定的时间来完成 现在,如果我排除最后一部分-随机时间长度-并确定每个测试的时间长度,那么一切都很好。但是对于随机测试时间,我如何确保在24小时内执行正确的数字?在我看来,我需要提前知道每次测试的时间长度,这样我就可以计算出我所需要的所有测试 有什么想法吗?我可能有点误解,但你是否在寻找类似以下的东西: int numberOfSeconds

我绞尽脑汁,试图为以下场景想出一个简单的方法(算法):

我想进行24小时的测试。 有三种测试。 每个测试必须在一定的时间百分比内执行。 每个测试必须随机花费一定的时间来完成

现在,如果我排除最后一部分-随机时间长度-并确定每个测试的时间长度,那么一切都很好。但是对于随机测试时间,我如何确保在24小时内执行正确的数字?在我看来,我需要提前知道每次测试的时间长度,这样我就可以计算出我所需要的所有测试


有什么想法吗?

我可能有点误解,但你是否在寻找类似以下的东西:

int numberOfSecondsForFirstTest = rand(86400); //86400 = Number of seconds in 24 hours.
int numberOfSecondsForSecondTest = rand(86400 - numberOfSecondsForFirstTest);
int numberOfSecondsForThirdTest = 86400 - numberOfSecondsForFirstTest - numberOfSecondsForSecondTest;

这将为三个不同的测试提供24小时的测试时间,精度为秒。

如果您要求24小时内的时间百分比,请保留测试剩余运行时间的运行总数,并将该总数设置为您希望的24小时的时间百分比

例如,您希望在24小时内运行30%的测试是这样的

float percent = .3;
int totalSeconds = 86400*percent;
while totalseconds > 0
{
    var timeOfTest = rand(totalSeconds)
    totalSeconds = totalseconds - timeofTest;
}
这将使测试运行24小时的30%,并且不会超过该测试的限制

如果百分比是基于它们必须运行的次数,那么您可以保留24小时内剩余时间的运行记录,并进行基于概率的测试,虽然不准确,但在很长的时间内会接近

var timeleft = 86400;
while (timeleft > 0)
{
    var prob = rand(100);
    var time = random(timeLeft);
    timeLeft = timeleft - time;
    if(prob < //percent of test 1)
        //run test 1
    if(prob < //percent of test 2 + percent to Test 1)
        //run test 2
    if(prob > //percent of test 2 + percent of test 1)
        //run test 3
var timeleft=86400;
而(时间间隔>0)
{
var prob=兰特(100);
var时间=随机(timeLeft);
timeLeft=timeLeft-时间;
如果(概率//测试2的百分比+测试1的百分比)
//运行测试3

该算法使用概率的末端行为渐近线,因此它不会总是精确地出现,但在24小时内,如果你将每次测试的长度限制为1000秒以下的少量随机时间,那么它应该相当接近。因此

随机时间长度是否受任何间隔的限制?如果不是,似乎你什么都做不了,be因为任何测试都可能需要24小时才能完成。当你说每个测试必须执行一定百分比的时间时,就是说测试执行的次数必须是一定百分比,或者测试运行的总时间必须是一定百分比的24小时?测试的顺序必须是随机的吗?因为如果不是,你可以旋转e测试1,然后是2,然后是3,然后是1…直到结束。如果这些百分比不相等,但是,比如说,20%,20%和60%,则将顺序调整为1-2-3-3。如果即使决定运行哪个测试也必须随机,那么您也会遇到问题:)@Mshnik-是的,每个测试的随机时间是有限制的(<24小时).@theDarse-测试的百分比,而不是时间