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