Thanks Mike it formats and reads perfectly… nice job, Rob > On 20 Jul 2017, at 8:02 am, 'Mike Day' via Programming > <programm...@jsoftware.com> wrote: > > This took me much longer than a lunch-break, partly because we > were away in France, and I was experimenting with J701 on my > iPad when Liz would let me. > > I came up with a number of variants, of which the following is best. > It's slower and uses more space than Raul's for small problem-sizes, > but is perhaps better for larger problems, eg n > 100 or so. > > NB. a Boolean verb for whether a player donates, which, > NB. of course, depends on whether he has any money: > > donation =: 1 & <. > > NB. This verb lists the indexes of the random donee (? player donated to) > NB. for each player, whether of not that player CAN donate. > NB. It assumes that its single argument is i.n where n is the number > NB. of players, which is why its name ends in i (!): > > idoneei=:(#|(+?&.<:@#~@#)) > > NB. The idea is to concatenate > NB. (the old state minus donation) and (donation), namely > NB. ((-, ])donation) > NB. and sum them as ordered with this left-hand key: > NB. (i.n) concatenated with (idonee), namely > NB. (, idoneei)@(i.@#) > > NB. Here it is, with a fix, f. > > new =: ((,idoneei)@(i.@#) +//. ((-, ])donation )) f. > > NB. time & space: > ts =: 6!:2 , 7!:2@] > > NB. where my version is ok: > ts'orig ^:5000 #~200' NB. Xiao-Yong Jin's original suggestion > 5.72563 22912 > ts'tick ^:5000 #~200' NB. Raul's revised version > 1.57339 77824 > ts'new ^:5000 #~200' NB. The best I could manage > 0.922963 20992 > > NB. and where it isn't so good: > ts'orig ^:5000 #~10' NB. Xiao-Yong Jin > 0.341718 6272 > ts'tick ^:5000 #~10' NB. Raul M > 0.0445439 3840 > ts'new ^:5000 #~10' NB. Mike D > 0.0676198 4864 > > Sorry for this late posting, but it wasn't convenient to > write up and send until home and with laptop to hand. > > Thanks, > Mike > > NB. prepared in notepad, copied to Thunderbird, and trying > to force fixed width - hope it displays reasonably. > > > > On 11/07/2017 19:33, Devon McCormick wrote: >> Reading the page referenced, I see where I was confused. The problem >> starts out as 100 people each with $100, but then solves a variant of it >> for 45 people with $45 each, possibly so the animation is legible. It's >> not clear why they even mention the first set of numbers. >> >> On Mon, Jul 10, 2017 at 8:37 PM, Raul Miller <rauldmil...@gmail.com> wrote: >> >>> Oops, I did not think about that "reflexive giving" wart. >>> >>> Here's a fix for my version: >>> >>> tick=: (0 >. <:) + i.@# +/@:(=/)~ I.@:* (] + <:) +/@:* ?@# <:@# >>> require 'stats' >>> stddev"1 tick^:(i.10) 45#45 >>> 0 0.977008 1.18705 1.73205 2.01133 2.15322 2.46798 2.86832 2.97719 3.1334 >>> tick^:10000]20#20 >>> 3 20 1 15 10 38 6 8 23 24 11 90 33 67 5 13 7 20 1 5 >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> On Mon, Jul 10, 2017 at 7:50 PM, 'Pascal Jasmin' via Programming >>> <programm...@jsoftware.com> wrote: >>>> >>>> The number of $ available each round is the number of people with >&0. >>> The number of potential recipients is the population. This simplification >>> though means its possible for someone to pay himself. >>>> >>>> A correction to your version, >>>> >>>> /:~@(-&1`]@.(=&0)"0 (#/.~@] + ~.@]{[)`(~.@])`[} >&0 # (?@#~@#@]`]`[} ] >>> I.@:= i.@#)@?@#~@#)^:21000 #~10 >>>> That assumption would increase the likelihood of eventual >>> "superconcntration" but that doesn't seem to happen. >>>> As soon as some have 0, the rest have a "negative return" expectation >>> each turn. >>>> >>>> ________________________________ >>>> >>>> >>>> From: Xiao-Yong Jin <jinxiaoy...@gmail.com> >>>> >>>> To: "programm...@jsoftware.com" <programm...@jsoftware.com> >>>> >>>> Sent: Monday, July 10, 2017 3:43 PM >>>> >>>> Subject: [Jprogramming] Everyone giving dollars to random others >>>> >>>> >>>> >>>> >>>> I thought this is a good lunch break exercise. >>>> >>>> >>>> >>>> http://www.decisionsciencenews.com/2017/06/19/counterintuitive- >>> problem-everyone-room-keeps-giving-dollars-random-others- >>> youll-never-guess-happens-next/ >>>> >>>> >>>> Quote: “Imagine a room full of 100 people with 100 dollars each. With >>> every tick of the clock, every person with money gives a dollar to one >>> randomly chosen other person. After some time progresses, how will the >>> money be distributed?” >>>> >>>> >>>> And I came up with this simulation. (45 people with 45 dollars each, >>> same as on the webpage.) >>>> >>>> >>>> /:~@(-&1`]@.(=&0)"0 (#/.~@] + ~.@]{[)`(~.@])`[} >&0 # (?@#~@#@]`]`[} ] >>> I.@:= i.@#)^:_@?@#~@#)^:5000 #~45 >>>> >>>> >>>> And I really like to see the mean expectations and the standard >>> deviation of the mean, I ended up doing this. (Make sure the J sentence is >>> one long line if you want to try it out.) >>>> >>>> >>>> ((],.[:(+/%#*<:@#)&.:*: -"1)+/%#)}.(/:~@(-&1`]@.(=&0)"0 (#/.~@] + >>> ~.@]{[)`(~.@])`[} >&0 # (?@#~@#@]`]`[} ]I.@:=i.@#)^:_@?@#~@#)^:10000)^:(<65) >>> #~45 >>>> >>>> 0.984375 0.124984 >>>> >>>> >>>> 2.01562 0.170335 >>>> >>>> >>>> 3.0625 0.180765 >>>> >>>> >>>> 4.15625 0.230616 >>>> >>>> >>>> 5.21875 0.248476 >>>> >>>> >>>> 6.1875 0.306894 >>>> >>>> >>>> 7.35938 0.332862 >>>> >>>> >>>> 8.64062 0.362809 >>>> >>>> >>>> 9.84375 0.380723 >>>> >>>> >>>> 10.9688 0.383805 >>>> >>>> >>>> 12.125 0.407944 >>>> >>>> >>>> 13.6406 0.423964 >>>> >>>> >>>> 15.0625 0.457453 >>>> >>>> >>>> 16.5312 0.462893 >>>> >>>> >>>> 18.1875 0.480717 >>>> >>>> >>>> 19.7031 0.464877 >>>> >>>> >>>> 21.1562 0.475709 >>>> >>>> >>>> 22.7031 0.483702 >>>> >>>> >>>> 24.4062 0.516935 >>>> >>>> >>>> 26.4062 0.5768 >>>> >>>> >>>> 28.1094 0.604266 >>>> >>>> >>>> 29.8281 0.617838 >>>> >>>> >>>> 31.875 0.61942 >>>> >>>> >>>> 33.9375 0.603345 >>>> >>>> >>>> 35.7812 0.642211 >>>> >>>> >>>> 37.9844 0.647987 >>>> >>>> >>>> 40.6562 0.731321 >>>> >>>> >>>> 43 0.739342 >>>> >>>> >>>> 45.3906 0.723616 >>>> >>>> >>>> 48.0469 0.7613 >>>> >>>> >>>> 51.6094 0.823639 >>>> >>>> >>>> 54.7656 0.873934 >>>> >>>> >>>> 57.1406 0.815544 >>>> >>>> >>>> 60 0.866598 >>>> >>>> >>>> 63.8594 0.898319 >>>> >>>> >>>> 68.75 0.918018 >>>> >>>> >>>> 73.5781 1.00736 >>>> >>>> >>>> 78.3281 1.08128 >>>> >>>> >>>> 84.9688 1.25534 >>>> >>>> >>>> 93.4688 1.29731 >>>> >>>> >>>> 104.578 1.73274 >>>> >>>> >>>> 114.922 2.07574 >>>> >>>> >>>> 131.938 2.7357 >>>> >>>> >>>> 159.359 4.40899 >>>> >>>> >>>> 204.766 7.24239 >>>> >>>> >>>> >>>> So, how do I make a fancy animation (like the one in the webpage I >>> linked in the beginning of this message) with J? >>>> >>>> ---------------------------------------------------------------------- >>>> >>>> >>>> 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 >>> >> >> > > > --- > 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