Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

random(6) [freebsd man page]

RANDOM(6)							 BSD Games Manual							 RANDOM(6)

random -- random lines from a file or random numbers SYNOPSIS
random [-elrUuw] [-f filename] [denominator] DESCRIPTION
Random has two distinct modes of operations. The default is to read in lines from the standard input and randomly write them out to the standard output with a probability of 1 / denominator. The default denominator for this mode of operation is 2, giving each line a 50/50 chance of being displayed. The second mode of operation is to read in a file from filename and randomize the contents of the file and send it back out to standard out- put. The contents can be randomized based off of newlines or based off of space characters as determined by isspace(3). The default denominator for this mode of operation is 1, which gives each line a chance to be displayed, but in a random(3) order. The options are as follows: -e If the -e option is specified, random does not read or write anything, and simply exits with a random exit value of 0 to denominator - 1, inclusive. -f filename The -f option is used to specify the filename to read from. Standard input is used if filename is set to '-'. -l Randomize the input via newlines (the default). -r The -r option guarantees that the output is unbuffered. -U Tells random(6) that it is okay for it to reuse any given line or word when creating a randomized output. -u Tells random(6) not to select the same line or word from a file more than once (the default). This does not guarantee uniqueness if there are two of the same tokens from the input, but it does prevent selecting the same token more than once. -w Randomize words separated by isspace(3) instead of newlines. SEE ALSO
random(3), fortune(6) HISTORY
The functionality to randomizing lines and words was added in 2003 by Sean Chittenden <>. BUGS
No index is used when printing out tokens from the list which makes it rather slow for large files (10MB+). For smaller files, however, it should still be quite fast and efficient. BSD
February 8, 2003 BSD

Check Out this Related Man Page

rl(1)								   User Commands							     rl(1)

rl - Randomize Lines. SYNOPSIS
rl reads lines from a input file or stdin, randomizes the lines and outputs a specified number of lines. It does this with only a single pass over the input while trying to use as little memory as possible. -c, --count=N Select the number of lines to be returned in the output. If this argument is omitted all the lines in the file will be returned in random order. If the input contains less lines than specified and the --reselect option below is not specified a warning is printed and all lines are returned in random order. -r, --reselect When using this option a single line may be selected multiple times. The default behaviour is that any input line will only be selected once. This option makes it possible to specify a --count option with more lines than the file actually holds. -o, --output=FILE Send randomized lines to FILE instead of stdout. -d, --delimiter=DELIM Use specified character as a "line" delimiter instead of the newline character. -0, --null Input lines are terminated by a null character. This option is useful to process the output of the GNU find -print0 option. -n, --line-number Output lines are numbered with the line number from the input file. -q, --quiet, --silent Be quiet about any errors or warnings. -h, --help Show short summary of options. -v, --version Show version of program. EXAMPLES
Some simple demonstrations of how rl can help you do everyday tasks. Play a random sound after 4 minutes (perfect for toast): sleep 240 ; play `find /sounds -name '*.au' -print | rl --count=1` Play the 15 most recent .mp3 files in random order. ls -c *.mp3 | head -n 15 | rl | xargs --delimiter=' ' play Roll a dice: seq 6 | rl --count 2 Roll a dice 1000 times and see which number comes up more often: seq 6 | rl --reselect --count 1000 | sort | uniq -c | sort -n Shuffle the words of a sentence: echo -n "The rain in Spain stays mainly in the plain." | rl --delimiter=' ';echo Find all movies and play them in random order. find . -name '*.avi' -print0 | rl -0 | xargs -n 1 -0 mplayer Because -0 is used filenames with spaces (even newlines and other unusual characters) in them work. BUGS
The program currently does not have very smart memory management. If you feed it huge files and expect it to fully randomize all lines it will completely read the file in memory. If you specify the --count option it will only use the memory required for storing the specified number of lines. Improvements on this area are on the TODO list. The program uses the rand() system random function. This function returns a number between 0 and RAND_MAX, which may not be very large on some systems. This will result in non-random results for files containing more lines than RAND_MAX. Note that if you specify multiple input files they are randomized per file. This is a different result from when you cat all the files and pipe the result into rl. COPYRIGHT
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Arthur de Jong. This is free software; see the license for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Version 0.2.7 Jul 2008 rl(1)
Man Page