Re: now, while loops construct errors
- To: mathgroup at smc.vnet.net
- Subject: [mg44306] Re: now, while loops construct errors
- From: poujadej at yahoo.fr (Jean-Claude Poujade)
- Date: Wed, 5 Nov 2003 10:00:29 -0500 (EST)
- References: <bo5sfg$m9$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
sean kim <sean_incali at yahoo.com> wrote in message news:<bo5sfg$m9$1 at smc.vnet.net>...
> 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[395]:=
> 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}]
>
The test is a 'go on' test and your dv module should therefore
be written this way :
dv := Module[{v1n, d1n},
While[(v1n = 10^Random[Real, {-12, -7}]);
(d1n = 10^Random[Real, {-6, -4}]);
Not[10^-8 <= (v1n/d1n) <= 10^-4]
];
{v1 -> v1n, d1 -> d1n, v1n/d1n // ScientificForm}];
---
jcp