![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Hur man skapar en "kill" lista | victorcheung | UNIX för avancerade & Expertanvändare | 10 | 05-15-2008 03:04 |
| generera slumptal i perl | zx1106 | Shell-programmering och Skript | 2 | 03-18-2008 12:13 |
| Generera ett slumpmässigt lösenord | chiru_h | Shell-programmering och Skript | 5 | 10-07-2007 09:03 |
| hur man kan skapa en lista med filer | jasongr | Shell-programmering och Skript | 3 | 12-13-2005 08:15 |
| Hur man skapar ett slumptal? | MacMonster | High Level Programming | 2 | 10-15-2001 01:35 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
#1 (permalänk)
|
||||
|
||||
|
hur man kan generera en slumpmässig lista från en viss lista
Bästa Masters,
Finns det ett enkelt sätt att generera en slumpmässig lista från en ge namnlista? Låt oss säga att jag har en fil som innehåller 15.000 ort i världen (kalkylblad, namn i den första kolumnen) vill jag slumpvis plocka upp 50 städer varje gång för totalt 1000 Spetshackor. Eller inte alla som vet ett program som kan användas för detta ändamål? Tack! |
|
#2 (permalänk)
|
|||||
|
|||||
|
ksh har en inbyggd slumpnummergenerator. Det är prestanda inte är spektakulära, men det är förmodligen bra för ditt ändamål. Det kommer att generera slumptal i intervallet 0 till 32767. Du kommer att behöva en annan. Använd denna metod:
Kod:
#! /usr/bin/ksh
#
# RANDOM is a random number between 0 and 32767 (inclusive)
max_random=32768
#
# We want a random number between 0 and 14 (inclusive)
max_needed=15
i=0
while ((i<7)) ; do
((r=RANDOM*max_needed/max_random))
echo $r
((i=i+1))
done
exit 0
)Men detta förutsätter att det är ok att plocka lsame linje två gånger från filen då och då. Många gånger det är precis vad du vill. Men ett par gånger, dubbletter är inte ok. Anta att det fanns 52 raderna i filen representerar kort i en lek med spelkort. Om du vill generera ett slumpmässigt pokerhand måste du eliminera dubbletter. I detta fall, skulle du första genererar ett tal mellan 1 och 52 och, som tidigare, du skulle hämta den valda linjen. Men då skulle du använda sed ta bort den raden vilket innebär att endast 51 rader i filen. För er andra kortet kan du generera ett slumptal mellan 1 och 51. Och så vidare. |
|
#3 (permalänk)
|
||||
|
||||
|
tack
... det är 50 fångar på en gång, men upprepas 1000 gånger, liksom re-shaffle och åter plocka och så vidare.
|
|
#4 (permalänk)
|
|||||
|
|||||
|
Prova något sådant
Kod:
#! /usr/bin/ksh
#
# Usage: $0 [file [count]]
#
File=${1}
Count=${2:-10}
while read line
do
echo "$RANDOM§$line"
done < $File | \
sort -t§ -k1,1n | \
head -$Count | \
cut -d§ -f2-
|