       now, while loops construct errors

• To: mathgroup at smc.vnet.net
• Subject: [mg44254] now, while loops construct errors
• From: sean kim <sean_incali at yahoo.com>
• Date: Fri, 31 Oct 2003 03:01:25 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```hello group.

ok. Long post once again. with multiple part question.

part 1.

now I have problems with constructing a while loop
under contraint.

This post also deals with picking random numbers under
a constraint. (I need to do this for a solve routine I
have developed for an ode system)

Peter and Daniel has used "While" effectively with
previous post, so I thought I would just modify their
codes to come up with something suits my needs in this
case. but it's not working out as i hoped.

I'm trying to pick randome numbers for a pair such
that the ratio of the two random numbers picked are
between a range given.

So with v1 and d1, the ratio has to be between 10^-8
and 10^-4. I have implemented this as follows.

In:=
dv:= Module[{v1n, d1n},
While[
(v1n=10^ Random[Real,{-12,-7}]);
(d1n=10^ Random[Real,{-6,-4}]);
10^-8<= (v1n/d1n)<= 10^-4 ];
{v1 -> v1n, d1 -> d1n, v1n/d1n//ScientificForm}]

Do[Print[dv], {n, 1, 10}]

above will pick random numbers and make the rule and
then print the ratio. ( "Do" will print it 10 times)

this seems to work at the first glance,  but not
really since it doesn't really do the random number
generation under the given constraint.

the constraint was that the ratio has to be between
10^-8 to 10^-4 ( for other cases, I have smaller
ranges for the constraint)

but quite often, i get ratios that are way out of the
range given.  below is one example...

Out= {v1->2.49351 x 10^-8, d1->1.59411 x 10^-6,
1.56421 x 10^-2}

last number(1.56421 x 10^-2) is the ratios between the
v and d, and it is clearly out of the range of 10^-8
to 10^-4. Obviously i'm not doing something right.

How do I fix this so that the routine picks under a
given constraint?

part2.

what exactly is the difference between the following
three repesentation of a range? (Peter suggested that
i use the first represntation, and i'm starting to see
why but i don't understand it)

In:=
{10^ Random[Real,{-12,-6}],
Random[Real,10^{-12,-6}],
Random[Real,{10^-12,10^-6}]}

upon repeat evaluating, it's easy to see that the
first representation gives number over wider range
while the other two stays within very short range.( in
the order of 10^-7)

Out=
{6.07721 x 10^-11, 3.82330 x 10^-7, 5.49021 x 10^-7}

Out=
{1.02699 x 10^-8, 6.28981 x 10^-7, 3.37704 x 10^-7}

Out=
{8.50961 x 10^-9, 9.98681 x 10^-7, 1.71181 x 10^-7}

any and all thoughts are greatly appreciated.( again)