php пробелы в функции random () [дубликаты]

Множество индексов - это индексы. Переход к простоте / удобочитаемости.

indices = [5, 12, 17]
input = range(20)
output = []

for i in reversed(indices):
    output.append(input[i:])
    input[i:] = []
output.append(input)

while len(output):
    print output.pop()
0
задан executable 19 March 2019 в 13:35
поделиться

2 ответа

$integer1 = rand (1, 66); // [1 .. 66]
if ($integer1 > 25) $integer1 += 34; // [1 .. 25, 60 .. 100]
0
ответ дан Mikhail Vladimirov 19 March 2019 в 13:35
поделиться

Ну, вы можете сделать свою собственную функцию, но остерегайтесь следующего. Каждое число должно быть нарисовано с равной вероятностью. Вам нужно будет определить, из какого диапазона будет получено число с вероятностью, пропорциональной размеру диапазона, например, Рисование из [1,10], [21, 40] должно составлять числа из [21,40] примерно в два раза чаще, чем из [1,10].

Вот общая идея:

Определить длину всех диапазонов.

Нарисуйте случайное число от 0 до длины всех диапазонов.

Проверьте, к какому диапазону относится число.

Нарисуйте соответствующее число из диапазона, в котором оно находится.

 function randFromRanges(...$ranges) {
       $totalRangeSize = array_sum(array_map(function ($range) { 
             return $range[1] - $range[0];
       }, $ranges));
       $numberToDraw = rand(0, $totalRangeSize);
       foreach ($ranges as $range) {
            if ($numberToDraw <=  ($range[1] - $range[0])) {
                return $range[0]+$numberToDraw;
            } else {
               $numberToDraw -= ($range[1] - $range[0]);
            }
       }
   }

Вот песочница, которая показывает, что все значения кажутся равноправными:

http://sandbox.onlinephpfunctions.com/code/b02603e4a9986132073d203c98f8255c2dd62e47

0
ответ дан apokryfos 19 March 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: