(}.-}:)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