一分钟内随机睡眠
Sleep at random intervals in a minute
目前我有以下内容:
$counter = 0;
$actions_per_minute = 6;
$sleep_time = (int)(60 / $actions_per_minute);
do{
sleep($sleep_time);
$counter++;
} while($counter < $actions_per_minute);
使用此代码,脚本将每 10 秒 睡眠一次是否可以在 60 秒 内随机设置它不是每 10 秒 所以可能 两次 在第一个 10 秒 ,睡 7 秒等。 ..
您可以构建一个总计 60 秒的睡眠时间数组,然后在使用时将它们从数组中弹出:
$times = [];
while (array_sum($times) < 60) {
$min = 1;
$max = 60 - array_sum($times);
$times[] = mt_rand($min, $max);
}
可能会将其包装在一个函数中,这样您就可以每分钟获得一个新数组。然后当你使用它时:
sleep(array_pop($times));
生成一个由 N 个随机数 ($actions_per) 组成的列表,这些数字加起来等于某个值 ($total_time):
$sleep_times = [];
$actions_per = 6;
$total_time = 60;
$sum = 0;
for ($action = 0; $action < $actions_per; $action++ ) {
$random_interval = rand(0,$total_time);
array_push($sleep_times, $random_interval);
$sum = $sum + $random_interval;
}
$scaleFactor = $sum / $total_time;
$checksum = 0;
foreach( $sleep_times as $sleep_time ){
$scaled = $sleep_time / $scaleFactor;
$checksum = $checksum + $scaled;
echo $scaled."\n";
}
echo "Check:".$checksum;
结果:
$actions_per = 6, $total_time = 60:
9.2523364485981
3.9252336448598
12.056074766355
16.822429906542
11.495327102804
6.4485981308411
Check:60
$actions_per = 12, $total_time = 60:
9.0532544378698
8.5207100591716
6.5680473372781
2.3076923076923
9.0532544378698
3.3727810650888
3.5502958579882
4.6153846153846
4.4378698224852
2.1301775147929
4.792899408284
1.5976331360947
Check:60
$actions_per = 6, $total_time = 120:
23.907156673114
18.568665377176
3.0174081237911
25.299806576402
23.675048355899
25.531914893617
Check:120
目前我有以下内容:
$counter = 0;
$actions_per_minute = 6;
$sleep_time = (int)(60 / $actions_per_minute);
do{
sleep($sleep_time);
$counter++;
} while($counter < $actions_per_minute);
使用此代码,脚本将每 10 秒 睡眠一次是否可以在 60 秒 内随机设置它不是每 10 秒 所以可能 两次 在第一个 10 秒 ,睡 7 秒等。 ..
您可以构建一个总计 60 秒的睡眠时间数组,然后在使用时将它们从数组中弹出:
$times = [];
while (array_sum($times) < 60) {
$min = 1;
$max = 60 - array_sum($times);
$times[] = mt_rand($min, $max);
}
可能会将其包装在一个函数中,这样您就可以每分钟获得一个新数组。然后当你使用它时:
sleep(array_pop($times));
生成一个由 N 个随机数 ($actions_per) 组成的列表,这些数字加起来等于某个值 ($total_time):
$sleep_times = [];
$actions_per = 6;
$total_time = 60;
$sum = 0;
for ($action = 0; $action < $actions_per; $action++ ) {
$random_interval = rand(0,$total_time);
array_push($sleep_times, $random_interval);
$sum = $sum + $random_interval;
}
$scaleFactor = $sum / $total_time;
$checksum = 0;
foreach( $sleep_times as $sleep_time ){
$scaled = $sleep_time / $scaleFactor;
$checksum = $checksum + $scaled;
echo $scaled."\n";
}
echo "Check:".$checksum;
结果:
$actions_per = 6, $total_time = 60:
9.2523364485981
3.9252336448598
12.056074766355
16.822429906542
11.495327102804
6.4485981308411
Check:60
$actions_per = 12, $total_time = 60:
9.0532544378698
8.5207100591716
6.5680473372781
2.3076923076923
9.0532544378698
3.3727810650888
3.5502958579882
4.6153846153846
4.4378698224852
2.1301775147929
4.792899408284
1.5976331360947
Check:60
$actions_per = 6, $total_time = 120:
23.907156673114
18.568665377176
3.0174081237911
25.299806576402
23.675048355899
25.531914893617
Check:120