MathGroup Archive 1995

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

Search the Archive

Challenge!

  • To: mathgroup at christensen.cybernetics.net
  • Subject: [mg889] Challenge!
  • From: Paul E Howland <PEHOWLAND at taz.dra.hmg.gb>
  • Date: Fri, 28 Apr 1995 00:46:49 -0400

Dear Mathgroup,

I have two lists of equal length M.

I wish to generate a third list also of length M, where the i th element
of this list is either the i th element of the first list, or the i th
element of the second list. 

It should be equally probable that the new element be chosen from the
first or second list. 

eg.  I have a list {a,b,c,d,e,f,g}
     and another   {A,B,C,D,E,F,G}

valid answers would be:
                   {a,B,C,d,e,F,G}
                   {a,b,c,d,E,f,g}
                   {A,B,C,D,e,f,G}
                   etc.

The function I have written to do this is:

	swap[list1_List, list2_List] :=
	Module[{newlist={},M},
               M = Length[list1];
               Do [AppendTo[
                            newlist, 
                            If[Random[]>0.5, list1[[i]], list2[[i]]]
                           ],
                   {i, M}
                  ];
               newlist
               ]

which works fine, but it really isn't very elegant in terms of Mathematica's
functional programming style.  There must be a more compact way to do this
in terms of Mapping functions, and so on.

What is the most compact function that could achieve my goal?

Paul.


  • Prev by Date: LinearSolve precision quirks (Was: Re: Lyapunov Equation)
  • Next by Date: Programming: List Structure Manipulation
  • Previous by thread: LinearSolve precision quirks (Was: Re: Lyapunov Equation)
  • Next by thread: Re: Challenge!