Unix random number generate in given range


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unix random number generate in given range
# 8  
Old 07-23-2011
For the heck of it, using sh and /dev/random, or when shell does not have $RANDOM
Code:
#!/bin/sh

if [ -z "$1" ]; then a=0; b=65536; else b=$((1+$1)); fi
[ -z "$2" ] || { a="$1"; b=$((1+$2-a));}
echo $((a+$(od -An -dN2 /dev/random)%b))

exit 0

Usage: this_script.sh outputs a value between 0 and 65535

this_script.sh MAX outputs a value between 0 and MAX

this_script.sh MIN MAX outputs a value between MIN and MAX
# 9  
Old 07-24-2011
Hi.

Another handy utility, jot produces, for 3 runs:
Code:
% jot -r 1 10 30
29
% jot -r 1 10 30
10
% jot -r 1 10 30
12

I first ran across jot in UNIX PowerTools, Second Edition - O'Reilly Media , but the version on Debian 5 (lenny) has been extended beyond that. There is a source tar file at http://ftp.de.debian.org/debian/pool....0.orig.tar.gz -- I unpacked, configured, and compiled the source successfully:
Code:
% ./jot -r 1 100 500
346

Like shuf, jot has more features, see Man Page for jot (FreeBSD Section 1) - The UNIX and Linux Forums

Best wishes ... cheers, drl
# 10  
Old 07-25-2011
Hey...Thanks to all for providing such useful info.
# 11  
Old 07-25-2011
Hi.
Quote:
Originally Posted by tukuyomi
For the heck of it, using sh and /dev/random ...
There is a characteristic of /dev/random that could become an issue. There may be a limit to how many bits one can pull from /dev/random because it may block. The alternate /dev/urandom is not blocked and is probably as good as /dev/random for many purposes.

For example, I can only get 200-300 numbers from the posted script before /dev/random blocks (Debian 5 -- lenny -- GNU/Linux).

See /dev/random - Wikipedia, the free encyclopedia for details on this and other aspects ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. OS X (Apple)

Generate a random number in a fully POSIX compliant shell, 'dash'...

Hi all... Apologies for any typos, etc... This took a while but it didn't beat me... Although there are many methods of generating random numbers in a POSIX shell this uses integer maths and a simple C source to create an executable to get epoch to microseconds accuracy if it is needed. I take... (8 Replies)
Discussion started by: wisecracker
8 Replies

2. Shell Programming and Scripting

Help with generate a pair of random number

Hi, Is anybody experience generate a pair of random number by using awk command? I wanna to generate a pair of random number (range from 1 to 4124) and repeats it 416 times. Desired output 2 326 123 1256 341 14 3245 645 . . . I did write the below command: awk... (5 Replies)
Discussion started by: perl_beginner
5 Replies

3. Shell Programming and Scripting

Generating Random Number in certain range

Hi there I am trying to generate a random number between 40 and 70 using the shell here is my code so far and it keeps going above 70. all help much appreciated! comp=$(( RANDOM%70+40 )) echo $comp (4 Replies)
Discussion started by: faintingquiche
4 Replies

4. Shell Programming and Scripting

[Solved] Help with random pick 1000 number from range 1 to 150000

Hi, Do anybody knows how to use awk or any command to random print out 1000 number which start from range 1 to 150000? I know that "rand" in awk can do similar random selection. But I have no idea how to write a code that can random pick 1000 number from range 1 to 150000 :confused: ... (1 Reply)
Discussion started by: perl_beginner
1 Replies

5. UNIX for Dummies Questions & Answers

how to generate random number as as the first column of a txt file

Dear all, I have a question. I have a txt file say 4000 rows X 1800 Column. I 'd like to creat a new column as the first column which is a column of random numbers (n=4000) thanks a lot! Lin (2 Replies)
Discussion started by: forevertl
2 Replies

6. Programming

Generate random number

I saw this formula to generate random number between two specified values in shell script.the following. $(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min)) Give a example in book. Generate random number between 6 and 30.like this. $(((RANDOM%30/3+1)*3)) But I have a... (1 Reply)
Discussion started by: luoluo
1 Replies

7. Shell Programming and Scripting

Generating random number within a specific range (0.5-1.5)

Hello, need a way to generate numbers within 0.5-1.5 range Has to be totally random: 0.6 1.1 0.8 1.5 0.6 and so on.... How to? (10 Replies)
Discussion started by: TehOne
10 Replies

8. Shell Programming and Scripting

generate random number in perl

Could any one tell how can I generate random number from (0, 100..200) in perl? Thanks! (2 Replies)
Discussion started by: zx1106
2 Replies

9. Shell Programming and Scripting

generate random number in korn shell

I want to be able to generate a random number within a korn shell script.. Preferably i would like to be able to state how many digits should be in this random number... ie 4 digits or 5 digits etc Any ideas? (2 Replies)
Discussion started by: frustrated1
2 Replies

10. Programming

How to generate a random number?

How to generate a random integer with specific range(for example, from 1 to 1000)? Also, how to convert a floating point number into a integer? (2 Replies)
Discussion started by: MacMonster
2 Replies
Login or Register to Ask a Question