I know that the numbers input are highly unlikely and skewed; however, it
is possible to be generated by?6#70.

(;+/)(}.-}:)0,<.172*(+/\%+/)>:1 1 1 1 1 65

+-------------+---+

|4 5 4 5 4 150|172|

+-------------+---+
The 150 is greater that 70.

On Wed, Jun 27, 2018 at 3:09 PM 'Bo Jacoby' via Programming <
programm...@jsoftware.com> wrote:

>       (}.-}:)0,<.172*(+/\%+/)>:?6#70 NB. the sum is guaranteed to be 172
> 40 20 41 22 44 5
>  +/40 20 41 22 44 5 NB. check
> 172
> /Bo
>
>
>     Den 17:27 onsdag den 27. juni 2018 skrev Devon McCormick <
> devon...@gmail.com>:
>
>
>  You could do it this way:
>
>   itt=. 1e5 6?@$0    NB. Generate 6 columns of numbers between 0 and 1
>   NB. Multiply by scaling factor to force sum to 172, then round and
>   NB. select those that sum to 172 after rounding.
>   itt=. itt#~172=+/"1 ([: <. 0.5 + ] * 172 % +/"1)"1 ] itt
>   3{.itt=. <.0.5+itt*("1 0)172%+/"1 itt
> 30 62  7 22 50  1
> 35 32 24 34 27 20
> 21 39  1 14 43 54
>
>   NB. Remove any row with element not less than or equal to 70:
>   $itt=. itt#~*./"1 itt<:70
> 52205 6
>
> So, over half of our random selections can be made to work.
>
> On Wed, Jun 27, 2018 at 2:24 AM, Skip Cave <s...@caveconsulting.com>
> wrote:
>
> > Raul, Robert, Jimmy, Louis, Bo, Rob,
> > Thanks so much for all the thoughtful and interesing answers. Your
> examples
> > gave me much insight on how the while. do. control structures work,
> which I
> > can never seem to remember.  I also got a better understanding of
> > itemize/laminate, very useful for sticking vectors together.
> >
> > In my particular case. I didn't have to generate millions of
> combinations,
> > so efficiency wasn't much of an issue for me.
> >
> > Skip
> >
> >
> > On Tue, Jun 26, 2018 at 9:12 AM Skip Cave <s...@caveconsulting.com>
> wrote:
> >
> > > I want to generate n sets of 6 random integers from 1->70 where each
> set
> > > of 6 integers sums to 172
> > >
> > > Here's my first try:
> > >
> > > ts =: 3 : 0
> > >
> > > b=: 2 6$0
> > >
> > > for. i.y do. a=:1+6?70
> > >
> > > b=:b,a
> > >
> > > end.
> > >
> > > b#~172=+/"1 b
> > >
> > > )
> > >
> > > Test it:
> > >
> > > ts 1000
> > >
> > > 27 60 5 24 53 3
> > >
> > > 38 35 3 15 57 24
> > >
> > > 16 29 19 50 4 54
> > >
> > > This generates some 6-element vectors that sum to 172 by elimination,
> but
> > > I don't have control of how many vectors it produces.
> > >
> > >
> > > I want to change the logic in the loop so that it keeps generating sets
> > of
> > > 6 random integers, testing whether they sum to 172, saving just the
> sets
> > > that sum to 172, until I have saved y random sets that sum to 172, and
> > then
> > > exits.
> > >
> > >
> > > Any help would be appreciated.
> > >
> > >
> > > Skip
> > >
> > >
> > > Skip Cave
> > > Cave Consulting LLC
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
>
>
> --
>
> Devon McCormick, CFA
>
> Quantitative Consultant
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to