Hi Paul, what about using a loop? I might consider making at conjunction if you intend to use this approach for other verbs:
repeat =: 2 : 0 : ret=.'' for_i. i.v do. ret=. ret, x u y end. ) 5 best3ofN repeat (5) 6 11 12 11 11 16 or demonstrating: 1 + repeat (6) 2 3 3 3 3 3 3 On Tue, Feb 21, 2017 at 5:35 AM, Paul Moore <[email protected]> wrote: > Hi, > I'm new to J (although I've been interested in it for many years, back > to J 6 or so!). I've not really gone through many of the tutorials, as > I've got a specific issue that I think might be a good "fit" for J, > but I'm not sure how to proceed. > > I have a function that generates (random) results, for example the > following that rolls N dice and adds the best 3 results: > > best3ofN =. +/ @: (3&{.) @: \:~ @: >: @: ? @: # > 5 best3ofN 6 > 16 > > What I want to do is to run that function a large number of times, and > "tabulate" the results - so I'll get a 2-d array of result-count > pairs. > > (My ultimate goal is to have a function that takes any function > similar to "best3ofN" and produces a result array for it - so "1000000 > histogram sum5d6" would display the results of running "sum5d6" a > million times, for example). > > The simplest way of doing this is just to get an array of the results, > then tally that up (I say "simplest", but it took me quite a while to > work out how to do this :-)). But that runs out of memory fairly > quickly, so what I'd prefer to do is to generate the results one by > one, and maintain a cumulative total. I suspect I should be able to do > this with some creative use of ^:, but I can't work out how. It's > possible that my frustration comes from the fact that in effect I have > a "non-pure" function, that takes no inputs and returns different > values each time - that seems like it's not a good fit for J's model. > But I'm sure that's more a failure of my imagination than of J itself. > > Any pointers on how to solve this problem would be much appreciated. I > realise that "go and read the tutorials, learn how to think in J, and > then it'll all be clear" is probably the best advice, but I'd like to > prove to myself that solving the sort of real-world problems I'm > interested in is possible/practical before doing a lot of tutorial > work. > > Thanks, > Paul > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
