Note that 1e6 ?@# 1e3 and 1e6 ?@$ 1e3 are both optimised compared to ? 1e6 # 1e3 10 timespacex '?1000000#1000'
0.0230934 1.67786e7 10 timespacex '1000000?@#1000' 0.0176543 8.39002e6 10 timespacex '1000000?@$1000' 0.0186202 8.39002e6 On Fri, Jul 28, 2017 at 10:36 AM, 'Mike Day' via Programming < programm...@jsoftware.com> wrote: > Just back from doing a BBC Prom! Very loud... Still some > voice left. > > If I'm doing a simulation, I often do ? on a large sample, > eg ?1000000#1000 or the like, and then "draw" from that > sample in sequence. Usually for independent trials. > > For example, for this donation problem, it _might_ be > preferable to sample ?10000 400$400 and then work down > the 10000 rows than doing the ^:10000 trick. (The trials > are still independent, assuming you're happy to sample > even for the non-donors.) > > I haven't tried that approach here, so don't know off hand > whether it's worth trying. > > Cheers, > Mike > > > On 27/07/2017 21:27, Jimmy Gauvin wrote: > >> I was wondering if making rg tacit would boost performance. >> Thanks to Raul for answering my unvoiced question. >> >> I guess key, nub and amend are well optimized in the J interpreter. >> >> Jimmy >> >> PS Is roll also optimized for speed? If not should we look into ISAAC or >> other fast PRNGs? >> >> >> >> On Thu, Jul 27, 2017 at 5:23 AM, Raul Miller <rauldmil...@gmail.com> >> wrote: >> >> Ah, i was testing it on too small of a data set. >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> >>> On Thu, Jul 27, 2017 at 4:33 AM, 'Mike Day' via Programming >>> <programm...@jsoftware.com> wrote: >>> >>>> Jimmy's original rg outperforms both tock and the best of >>>> my various attempts at "new" for "larger" problems, eg >>>> >>>> 10 ts 'rg^:10000 #~400' >>>> 0.633403 38272 >>>> 10 ts 'tock^:10000 #~400' >>>> 0.751826 34816 >>>> 10 ts 'new^:10000 #~400' >>>> 0.793394 39424 >>>> >>>> NB. less good on smaller ones >>>> 30 ts 'rg^:10000 #~10' >>>> 0.10968 6784 >>>> 30 ts 'tock^:10000 #~10' >>>> 0.0662844 3840 >>>> 30 ts 'new^:10000 #~10' >>>> 0.0633482 3968 >>>> >>>> (Have you looked at Raul's results table, posted on 20/7?) >>>> >>>> The original problem asked us to consider 100 players, >>>> but, as usual, it's one thing to solve a small puzzle that you >>>> can get your head round, but very often a much more challenging >>>> requirement to get it to scale up. >>>> >>>> Those many Project Euler problems are worth looking at with >>>> scale of application in mind. ( //projecteuler.net ) >>>> >>>> Thanks, >>>> Mike >>>> >>>> >>>> >>>> On 27/07/2017 05:54, Raul Miller wrote: >>>> >>>>> Oh, well, you could make it tacit. For example: >>>>> >>>>> rg=:(((#/.~@])`(~.@])`(0*[)} +/?@##)+-) * >>>>> >>>>> That does not speed it up, though. >>>>> >>>>> Anyways, good luck, >>>>> >>>>> >>>> --- >>>> This email has been checked for viruses by Avast antivirus software. >>>> https://www.avast.com/antivirus >>>> >>>> ---------------------------------------------------------------------- >>>> 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 >> > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm