Hi Skip,

I came up with this using while. and putting the test for summation inside the 
loop.

Cheers, bob

ts =: 3 : 0

 b=: 0 6$0

 while. 6>#b do. a=:1+6?70
             if. 172=+/"1 a do. b=:a,b end.
             end.
b

)

   ts ''
10 60 13 26 14 49
 6 37 65  5 43 16
23 26 11 56 51  5
59 19 22 62  9  1
26 69 30 24 21  2
12 36 16 17 63 28
   ts ''
48  5 43 35 19 22
35 32 53 43  3  6
 2 32  6 62 36 34
33 37 36 10 17 39
 1 22 53  3 32 61
19 15 66 42 21  9


> On Jun 26, 2018, at 7: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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to