MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Table with condition

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130238] Re: Table with condition
  • From: Bob Hanlon <hanlonr357 at gmail.com>
  • Date: Tue, 26 Mar 2013 04:04:49 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20130325032310.11A0569D2@smc.vnet.net>

Module[{ri, list},
 list = {ri = RandomInteger[10]};
 While[ri != 5, AppendTo[list, ri = RandomInteger[10]]];
 list]

{2, 2, 5}

AppendTo is fairly inefficient. If the condition is such that the list
is likely to be very long, the following may be a better approach:

Module[{ri, list},
 list = {ri = RandomInteger[10]};
 While[ri != 5, list = {list, ri = RandomInteger[10]}];
 list // Flatten]

{2, 8, 2, 10, 6, 2, 6, 5}


Bob Hanlon


On Sun, Mar 24, 2013 at 11:23 PM, =C5 er=C3=BDch Jakub <Serych at panska.cz> wrote:
> Dear mathgroup,
> I need to start creating list and continue until some condition is not met.  For example to generate list of random numbers until the value is not 5. Yes, it is theoreticaly possible to generate list with sufficient length, and cut it on the right place afterwords, but it is very inefficient way if the computation is much harder than just generation of random numbers.
>
> TakeWhile[Table[RandomInteger[{0, 10}], {15}], # != 5 &]
>
> Using the while cycle is the other way, but I can only print values using that method, but I don't know, how to generate classical list:
>
> r = 0;
> While[r != 5, r = RandomInteger[{0, 10}]; Print[r]]
>
> What is the right solution of such a simple problem?
>
> Thanks in advance for any help
>
> Jakub
>
>



  • Prev by Date: Recursive function: What is the proper way to get mathematica to
  • Next by Date: Re: Overdetermined NDSolve
  • Previous by thread: Table with condition
  • Next by thread: Re: Table with condition