20 ms·
An R vector would be `1:1000000`
by bigfudge 6y ago
An R vector would be `1:1000000`
- klibertp 6y agoNope, that's - as far as I can see - just a sequence of increasing integers. Both K and J examples give an array of random integers in 0-1000000 range. For reference, in J such sequence of integers can be generated with: 1+i.1000000 1 2 3 4 5 6 7 8 9 10 .... or: 1+i.1000000 1 1 2 3 4 5 6 7 8 9 10 .... To explain the previous examples (and let's use smaller integer for less typing...), the `$` verb is called "shape"/"reshape", and it takes a (list of) values on the right side, and a list of dimensions on the left: 5 2 $ 10 10 10 10 10 10 10 10 10 10 10 if there's not enough values on the right, they are cycled: 5 2 $ 10 11 12 10 11 12 10 11 12 10 11 12 10 which degenerates to repetition if there's only one value on the right. The `~` adjective (called "reflex") modifies a verb to its left in the following way: V~ x NB. same as x V x so `$~10` is the same as `10$10`, which is a list of ten tens. That list is passed to `?`, which is a verb called "roll", which gives a random integer in the 0-(y-1) range when written as `? y`. `y` here can be a scalar, or a list, in which case the roll is performed for each element of the list: $~ 10 10 10 10 10 10 10 10 10 10 10 ? $~ 10 1 6 9 4 6 8 8 7 9 4 The dyadic case, ie. `x ? y` is called "deal", which selects `x` elements from `i. y` list at random, without repetitions. `?~ y`, then, effectively shuffles the `i. y` list: ?~10 6 9 7 3 5 1 8 0 4 2 "deal" can be used to shuffle any list, not only the `i. y` sequence, by using the shuffled list as indexes of another list (using `{` verb, called "from"): 2*i.10 0 2 4 6 8 10 12 14 16 18 (?~10){2*i.10 14 10 18 6 2 12 8 0 16 4 ...I know, I know, it is strange. But it's so interestingly mind-bending that I'd be really happy if I had a valid excuse to pour hundreds of hours into learning J properly. Sadly, I don't have anything like that, so I only spread the strangeness from time to time in comments, like I do right now :) All the primitives (words) are described here: https://code.jsoftware.com/wiki/NuVoc https://code.jsoftware.com/wiki/NuVoc