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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Generating random number within a specific range (0.5-1.5)
# 1  
Old 04-03-2009
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?
# 2  
Old 04-03-2009
Take ${RANDOM}, mod by 11, add 5, divide by 10. If that's not random enough, implement yourself a Blum-Blum-Shub-PRNG
# 3  
Old 04-03-2009
Quote:
Originally Posted by pludi
Take ${RANDOM}, mod by 11, add 5, divide by 10. If that's not random enough, implement yourself a Blum-Blum-Shub-PRNG
and how will that stay within 0.5 and 1.5 ?
# 4  
Old 04-03-2009
The RANDOM variable will generate a random integer every time it's read, say 7081 or 17285. The modulo operation will return the remainder of a division, which can only be between 0 and divisor-1, so with 11 it's between 0 and 10. Add 5 so it's between 5 and 15. Divide by 10, and it's between .5 and 1.5

7081 % 11 = 8
8 + 5 = 13
13 / 10 = 1.3

17285 % 11 = 4
4 + 5 = 9
9 / 10 = 0.9
# 5  
Old 04-03-2009
echo $((((RANDOM%11)+5)/10))
1
echo $((((RANDOM%11)+5)/10))
0

That's not what I need.... look my first post I gave some output examples
# 6  
Old 04-03-2009
Quote:
Originally Posted by TehOne
echo $((((RANDOM%11)+5)/10))
1
echo $((((RANDOM%11)+5)/10))
0

That's not what I need.... look my first post I gave some output examples
All ksh arithmetic is integer.
Use 'bc' for the floating point arithmetic.
something along the lines:
Code:
echo "scale=2;(((${RANDOM} % 11)+5)/10)" |bc

OR
Code:
nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'


Last edited by vgersh99; 04-03-2009 at 01:42 PM..
# 7  
Old 04-03-2009
Quote:
Originally Posted by vgersh99
All ksh arithmetic is integer.
Use 'bc' for the floating point arithmetic.
something along the lines:
Code:
echo "scale=2;(((${RANDOM} % 11)+5)/10)" |bc

OR
Code:
nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'

Code:
[19:02:20] root:~# echo "scale=2;(((${RANDOM} % 11)+5)/10)" | bc
.50
[19:02:20] root:~# echo "scale=2;(((${RANDOM} % 11)+5)/10)" | bc
.51
[19:02:21] root:~# echo "scale=2;(((${RANDOM} % 11)+5)/10)" | bc
.50
[19:02:21] root:~# echo "scale=2;(((${RANDOM} % 11)+5)/10)" | bc
.50
[19:02:21] root:~# echo "scale=2;(((${RANDOM} % 11)+5)/10)" | bc
.50

It only gives .50 or .51 as output...

and when using quickly

Code:
nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'

it gives a couple times the same result... example:

Code:
[19:03:17] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
0.60
[19:03:18] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
1.00
[19:03:19] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
1.00
[19:03:19] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
1.00
[19:03:19] root:~# nawk 'BEGIN {max=10000;srand(); printf("%.2f\n", ((int(max*rand())%11)+5)/10)}'
1.00

My script will be using the random command sometimes a few times within one second and having the same result each time is not an option..

Last edited by TehOne; 04-03-2009 at 02:12 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Generating a POSIX random number?

Hi Guys and gals... As you know I am getting to grips with POSIX and hit this stumbling block. Generating two random numbers 0 to 255 POSIXly. Speed in not important hence the 'sleep 1' command. I have done a demo that works, but it sure is ugly! Is there a better way? #!/bin/sh # Random... (12 Replies)
Discussion started by: wisecracker
12 Replies

2. Shell Programming and Scripting

Generating a Random String of 'n' length

Hi, How can I generate a string of random characters (alpha+numeric) of a particular length ? For e.g. for n=5, output = 'kasjf' n=10, output = 'hedbcd902k' Also, please let me know if random (valid) dates could also be generated. Thanks (7 Replies)
Discussion started by: rishigc
7 Replies

3. Shell Programming and Scripting

Random number generating script?

Having a hard time with this. Very new to scripting and linux. Spent all sunday trying to do this. Appreciate some help and maybe help breaking down what the syntax does. Create a Bash program. It should have the following properties • Creates a secret number between 1 and 100 i. The... (3 Replies)
Discussion started by: LINUXnoob15
3 Replies

4. 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

5. 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

6. Programming

Generating Random Number in Child Process using Fork

Hello All, I am stuck up in a program where the rand functions ends up giving all the same integers. Tried sleep, but the numbers turned out to be same... Can anyone help me out how to fix this issue ? I have called the srand once in the program, but I feel like when I call fork the child process... (5 Replies)
Discussion started by: manisum
5 Replies

7. Shell Programming and Scripting

Unix random number generate in given range

Hi All, I have extracted some report from database for few activities done. Now I have a requirement to add some random time(In range of 10-35) in front of each activity. Can be generated random numbers in any bash/sh shell within a given number range, let's say in between 10-30. ... (10 Replies)
Discussion started by: gr8_usk
10 Replies

8. Programming

C Help; generating a random number.

Im new to C, and Im having a hard time getting a random number. In bash, I would do something similar to the following to get a random number; #!/bin/bash seed1=$RANDOM seed2=$RANDOM seed3=$RANDOM SEED=`expr $seed1 * $seed2 / $seed3` echo ${SEED%.*} Now, in online examples... (4 Replies)
Discussion started by: trey85stang
4 Replies

9. Programming

generating 16 digit random number in C

Hi, How can we generate 16 digit random nos in C. (10 Replies)
Discussion started by: ajaysahoo
10 Replies

10. Shell Programming and Scripting

Generating random numbers

Hi, I am having trouble with generating random numbers. can this be done with awk? So I have a file that looks like this: 23 30 24 40 26 34 So column1 is start and column2 is end. I want to generate 3 random #'s between start and stop: So the output will look like this: ... (9 Replies)
Discussion started by: phil_heath
9 Replies
Login or Register to Ask a Question