how to generate a random list from a given list


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to generate a random list from a given list
# 1  
Old 05-29-2006
how to generate a random list from a given list

Dear Masters,

Is there an easy way to generate a random list from a give list of names? Let's say, I have a file containing 15000 city name of world(spreadsheet, names in the first column), I would like to randomly pick up 50 cities each time for total 1000 picks. Or doesn't anyone know a program can be used for this purpose?

Thanks!
# 2  
Old 05-29-2006
ksh has a built-in random number generator. It's performance is not spectacular, but it is probably good enough for your purposes. It will generate random numbers in the range of 0 to 32767. You will need a different range. Use this technique:
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

Warning: do not use the modulus operation to convert the range. The above code is using the high order bits of the initial random number while the modulus operation would use the low order bits. So you would generate a random number between 0 and 14999. Then you would add one to get a line number between 1 and 15000. Then just use sed or something to retrieve that line. (Or something like that. I got lost in your math...I don't understand how picking 50 cities gives us 1000 picks. Smilie )

But this assumes that it is ok to pick the lsame line twice from the file every now and then. Many times that is exactly what you want. But a few times, duplicates are not ok. Suppose that there were 52 lines in the file representing the cards in a deck of playing cards. If you want to generate a random poker hand, you must eliminate duplicates. In this case, you would first generate a number between 1 and 52 and, as before, you would retrieve the selected line. But then you would use sed to delete that line leaving only 51 lines in the file. For your second card, you generate a random number between 1 and 51. And so on.
# 3  
Old 05-29-2006
thanks

...it's 50 picks at a time, but repeat 1000 times, like re-shaffle and re-pick and so on.
# 4  
Old 05-30-2006
Try something like this
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-

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Generate list of letters

Heyas I want to list passed arguments and make an incrementing 'marker'. That 'marker' should be a letter between a-z, in proper order. I'm not aware of a seq pendant, so i tried it with this: C=141 list="" while ];do printf \\$C list+=" \\$C" C=$((C+1)) done echo... (3 Replies)
Discussion started by: sea
3 Replies

2. Shell Programming and Scripting

Need to generate a file with random data. /dev/[u]random doesn't exist.

Need to use dd to generate a large file from a sample file of random data. This is because I don't have /dev/urandom. I create a named pipe then: dd if=mynamed.fifo do=myfile.fifo bs=1024 count=1024 but when I cat a file to the fifo that's 1024 random bytes: cat randomfile.txt >... (7 Replies)
Discussion started by: Devyn
7 Replies

3. Shell Programming and Scripting

Generate list of directories that a user has access to

I manage an AIX OS 7.1 system on IBM Power 770. I want to find out which directories/folders a particular user has read/write access to. How can I cleanly create a list of all directories on the system that a user has access to.. Does this make sense? Thanks in Advance, NEWB:rolleyes: (3 Replies)
Discussion started by: code911
3 Replies

4. UNIX for Dummies Questions & Answers

Generate list of deleted files

I copied all JPEGs from my laptop to an external drive using find . -name "*.jpg" -exec cp '{}' ./media/Backup/pictures \; And then deleted all of them from my laptop. Now, I realize that I need the folder path of all the original JPEGs as the path has the important information. I dont... (1 Reply)
Discussion started by: eshwaconsulting
1 Replies

5. Solaris

list any random first 5 files with 'ls'

I just need to see any number of random files to see the owner, group and permissions information since all the files in the directory have the same permissions and ownership information. Is it possible just to list any 5 files without going thru the series of commands such as "ls -ltu | head -5"... (8 Replies)
Discussion started by: yoonkim
8 Replies

6. Shell Programming and Scripting

Generate a change list of files/dir

Is there a tool that can diff a directory and generate a change list of files in that directory based on a previous snapshot on the directory? For example /etc/a.txt:changed /etc/b.txt:removed /etc/c.txt:added Thanks! (1 Reply)
Discussion started by: overmindxp
1 Replies

7. Shell Programming and Scripting

How to generate the list?

Reference post, https://www.unix.com/shell-programming-scripting/131307-incrementing-twist-please-help.html , I can generate a word list easily, by echo or for loop. For example, with the echo command and word expect, I can list all 6 letters possibility (6X6X6X6X6X6=46656) echo... (6 Replies)
Discussion started by: rdcwayx
6 Replies

8. Shell Programming and Scripting

Script to generate a list of number

How can I generate a list of numbers and place all of these numbers in a line-by-line into a file. I am new to scripting actually. 0501000000 to 0509999999 i.e. 0501000000 0501000001 ...... 0509999999 set 02 0551000000 to 0559999999 i.e. 0551000000 0551000001 ...... 0559999999 ... (3 Replies)
Discussion started by: noo
3 Replies

9. UNIX for Advanced & Expert Users

How to generate a 'kill' list

Hi, I want to write a script which can generate a kill list for killing process, program name start with f60.., which have been running for more than 8 hours, the list output should looks like: kill -9 4444176 kill -9 4674520 kill -9 4454180 kill -9 4994523 Can anyone help how to write... (10 Replies)
Discussion started by: victorcheung
10 Replies

10. Shell Programming and Scripting

how to generate a list of files

Hello people I need to find a way to generate a file that contains the names of all *.jpg files that were generated after a specific date The search should start in my current folder and recursively search inner folders It would be best to list the file names one below the other in the output... (3 Replies)
Discussion started by: jasongr
3 Replies
Login or Register to Ask a Question