The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-29-2006
mskcc mskcc is offline
Registered User
  
 

Join Date: Jul 2005
Inlägg: 37
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)  
Old 05-29-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.125
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
Varning: Använd inte modulus funktion för att omvandla området. Ovanstående kod använder hög för bit av den ursprungliga slumptal medan modulus operation skulle använda den låga för bitar. Så du skulle generera ett slumptal mellan 0 och 14999. Då skulle du lägga en att få en linje nummer mellan 1 och 15000. Sedan använder sed eller något för att hämta den linjen. (Eller nåt sånt. Jag har förlorat i din matte ... Jag förstår inte hur plocka 50 städer ger oss 1000 Spetshackor. )

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)  
Old 05-29-2006
mskcc mskcc is offline
Registered User
  
 

Join Date: Jul 2005
Inlägg: 37
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)  
Old 05-30-2006
aigles's Avatar
aigles aigles is online now Forum Advisor  
Registered User
  
 

Join Date: april 2004
Ort: Bordeaux, Frankrike
Inlägg: 1.428
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-
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är På
Smilies är På
[IMG] kod PÃ¥
HTML-koden är Av
Trackback är På
Pingbacks är På
Refbacks är På




Alla tider är GMT -4. Klockan är nu 11:22.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0