Portál AbcLinuxu, 6. listopadu 2025 02:13
Řešení dotazu:
To je zase dotaz.
Prozradíš nám alespoň jazyk v kterém to chceš udělat?
import random
def generate():
numbers = []
while True:
if not numbers:
numbers = list(range(10))
random.shuffle(numbers)
yield numbers.pop()
# And now simply generate the numbers
for x in generate():
print x
Alternativně jde při každém kroku vygenerovat posici ve seznamu zbývajících čísel, odpovídající číslo vrátit, na tuto posici přesunout poslední číslo a seznam zbývajících čísel zkrátit.
Má-li být rozsah generovaných čísel tak velký, že toto jednoduché řešení nelze použít, jsou jiné možnosti, ale to chce znát něco o zamýšlené aplikaci.
Ahoj.
Ten python jsem taky moc nepobral, takze spis odhaduju z toho slovniho popisu, ze to probiha zhruba takto:
Jestli jsem se netrefil, tak snad me autor opravi 
Dejv
use List::Util qw{shuffle};
my @numbers = (1..10)x4; #do @numbers dej 4x čísla 1..10
say join " ",shuffle(@numbers); #zamíchej tyto čísla a vytiskni je
tedy pokud chce permutace s opakováním, pro variace stačí vzít prvních n prvků.
popř. by šla použít přímo nějaká knihovna na permutace (variace) s opakováním
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.