The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Hvordan til at generere en 'dræber' liste victorcheung UNIX for Advanced & Ekspertsøgning Brugere 10 05-15-2008 03:04 AM
generere tilfældige tal i perl zx1106 Shell Programmering og Scripting 2 03-18-2008 12:13 AM
Generer et tilfældigt password chiru_h Shell Programmering og Scripting 5 10-07-2007 09:03 PM
hvordan man kan generere en liste af filer jasongr Shell Programmering og Scripting 3 12-13-2005 08:15 AM
Hvordan til at generere et tilfældigt tal? MacMonster Højtstående Programmering 2 10-15-2001 01:35 PM

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 05-29-2006
mskcc mskcc is offline
Registreret Bruger
  
 

Join Date: Jul 2005
Stillinger: 37
hvordan man kan generere en vilkårlig liste fra en given liste

Kære Masters,

Er der en nem måde at generere en vilkårlig liste fra et give listen over navne? Lad os sige, jeg har en fil, der indeholder 15.000 bynavn af verden (regneark, navne i første kolonne), vil jeg gerne tilfældigt stige 50 byer hver gang for den samlede 1000 Spidshakker. Eller ikke nogen, der ved et program kan bruges til dette formål?

Tak!
  #2 (permalink)  
Old 05-29-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Beliggenhed: Ashburn, Virginia
Indlæg: 9.131
ksh har en indbygget i Random Number Generator. It's præstationer ikke spektakulære, men det er sikkert godt nok til dit formål. Det vil generere tilfældige tal i intervallet 0 til 32.767. Du skal bruge en anden række. Brug denne teknik:
Code:
#! /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

Advarsel: Brug ikke modulus drift at konvertere intervallet. Ovenstående kode anvender højt for bits af den oprindelige tilfældige tal, mens de modulus operation ville bruge den lave orden bits. Så du ville generere et tilfældigt tal mellem 0 og 14.999. Derefter skal du føje en til at få en linje tal mellem 1 og 15.000. Så skal du bare bruge sed eller noget at hente denne linje. (Eller noget i den retning. Jeg druknede i din math ... Jeg forstår ikke, hvordan picking 50 byer giver os 1000 Spidshakker. )

Men dette forudsætter, at det er ok at vælge de lsame linje to gange fra fil hver ny og næ. Mange gange er det præcis det, du ønsker. Men et par gange, dubletter er ikke ok. Antag, at der var 52 linjer i filen svarende til kortene i et dæk spillekort. Hvis du ønsker at generere et tilfældigt pokerhånd, skal du fjerne dubletter. I dette tilfælde skal du i første omgang vil generere et tal mellem 1 og 52, og som før, du vil hente den valgte linje. Men så ville du bruge sed for at slette denne linje forlader kun 51 linjer i filen. For det andet kort, skal du generere et tilfældigt tal mellem 1 og 51. Og så videre.
  #3 (permalink)  
Old 05-29-2006
mskcc mskcc is offline
Registreret Bruger
  
 

Join Date: Jul 2005
Stillinger: 37
tak

... det er 50 valg på et tidspunkt, men gentage 1000 gange, ligesom re-shaffle og re-pick og så videre.
  #4 (permalink)  
Old 05-30-2006
aigles's Avatar
aigles aigles is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Apr 2004
Beliggenhed: Bordeaux, Frankrig
Posts: 1.433
Prøv noget lignende dette

Code:
#! /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

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er PÃ¥
Smilies er PÃ¥
[IMG] koden er PÃ¥
HTML-koden er Slukket
Trackbacks er PÃ¥
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle tidspunkter er GMT -4. Den tid er nu 11:59 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0