Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

rolldice(6) [debian man page]

ROLLDICE(6)							   Games Manual 						       ROLLDICE(6)

NAME
rolldice - rolls virtual dice SYNOPSIS
rolldice [ options ] dice_string dice_string ... DESCRIPTION
rolldice rolls virtual dice. The dice strings passed on the command line contain information on the dice to roll in a format comparable to the format used in fantasy role playing games. OPTIONS
-h,--help returns the usage of diceroll -v,--version returns the version of diceroll -r,--random uses /dev/random for random number generating -u,--urandom uses /dev/urandom for random number generating (default) -s,--separate prints out the result of each individual die separately, as well as the operations and totals DICE STRING FORMAT
The dice string uses the following format: {#x}{#}d[#|%]{*#}{+/-#}{s#} The dice string doesn't have to be in the format that I outlined above, but this is the nicest order for me. It will try to parse any dif- ferent string containing the same sections in the best way it can, and will throw out anything that isn't one of the sections below. {#}d[#|%] This is the only required part of the string, and now really isn't even required, as it defaults to 1d6 if not found. The first number is the number of dice to roll, and the second number is the number of sides the dice have. The numbers rolled on each die are then added up and given as the result. Hence 3d6 means "roll three six-sided dice, add them together and return the result". If the first number is left out, then the number of dice defaults to 1. If the second number is not a number, but a percentage sign, then the number of sides becomes 100 (for a percentage roll). {#x} This number tells how many times to roll. For example, if you want to roll 3 6-sided dice 6 times, you would say 6x3d6. This would return six numbers, corresponding to the six different rolls. {*#} This number tells how many times to multiply the result of each roll. 3d6*100 would return a number in the range of 300-1800, since 3-18 is the range resulting from 3d6, which is then multipled by 100. {+/-#} This number is the modifier to be added or subtracted, depending on the sign, from each roll. 1d4+1 would result in a range from 2-5 (1-4 for the die, plus 1). This step is handled *after* the multiplication modifier. {s#} This number tells the program to drop the # lowest dice rolls. This step is handled *before* the multiplication modifier. in the order show above. For an extreme example, "3x4d6*5+1s2" would roll four six-sided dice, drop the lowest two, multiply the result by 5, add 1 to that, and repeat the process two more times, for a total of three results. DIAGNOSTICS
The following error messages may appear on STDERR: Failure in getting dice attributes Either memory could not be allocated while parsing the string passed to the rolldice program or an invalid dice string was entered. Failure in rolling dice Memory could not be allocated while actually rolling the dice. Unknown option Take a wild guess ;) BUGS
I haven't noticed any yet... rolldice is a quick hack to provide a virtual dice roller for FRPGs that I play. Any improvements are greatly welcome, as I am not the most experienced C coder... AUTHOR
Stevie Strickland <sstrickl@cc.gatech.edu> VERSION
1.10 - 25 Nov 2001 Linux 25 Nov 2001 ROLLDICE(6)

Check Out this Related Man Page

rl(1)								   User Commands							     rl(1)

NAME
rl - Randomize Lines. SYNOPSIS
rl [OPTION]... [FILE]... DESCRIPTION
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