- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
<?php
function randomizer($min, $max, $maxn)
{
// $max = максимальное
// $min = минимально
// $maxn = сколько выдать
$random = array(); // здесь будет массив наших чисел
$tmp = array(); // временный массив
for ($i = 0; $i < $maxn; $i++) {
do {
$a = rand($min, $max);
} while (isset($tmp[$a]));
$tmp[$a] = 1;
$random[] = $a;
}
unset($tmp);
return $random;
}
guest 28.01.2012 14:17 # +2
А при max - min < maxn, будет вечный цикл.
Lure Of Chaos 28.01.2012 14:34 # 0
SmackMyBitchUp 28.01.2012 14:45 # +3
guest 28.01.2012 15:01 # +2
JaneBurt 07.08.2021 00:17 # 0
Если интервал достаточно большой то генерить с помощью отсортированного связного списка, у которого голова - минимальный элемент (включительно), а хвост - максимальный (не включается в множество). На каждой итерации pick-ать элемент из интервалов которые образуются 2-мя нодами, и добавлять ноду с выбранным элементом в список.
JaneBurt 07.08.2021 00:24 # 0
Unknown 07.08.2021 00:57 # +4
OCETuHCKuu_nemyx 07.08.2021 00:59 # 0
Unknown 07.08.2021 01:30 # +1
bootcamp_dropout 07.08.2021 01:43 # +2
CHayT 07.08.2021 01:04 # +6
MAKAKA 07.08.2021 01:35 # +3
j123123 07.08.2021 06:42 # +3
Ну это какие-то местные традиции, писать кому-то в какие-то несвежие говнокоды. И этот вопрос принято задавать так: "Как ты попал в этот тред?"
https://gcode.space/#!/search?q="Как ты попал в этот тред%3F"
bormand 08.08.2021 12:02 # +2
В этом кейсе вообще надо исключение кидать, имхо. Т.к. задача не имеет решений. Ну нельзя из 2 элементов выбрать три без повторов.
MOPCKOu_nemyx 08.08.2021 12:18 # +5
istem 29.01.2012 01:18 # 0
j123123 07.08.2021 06:44 # 0
foreach -> for -> while -> goto
guest8 09.04.2019 12:35 # +1