**Arrays.** I can declare an array and return an arbitrary element from it:

S := {2,4,6,8,10} S[[3]] 6

I can also do the same things for an anonymous array:

{2,4,6,8,10}[[3]] 6

In both cases, I request the third element of the array in double square brackets, and Mathematica returns with the number 6. I can request a random element as was shown in previour posts, but it would be better to name the array:

S[[Random[Integer,{1,Length[S]}]]]

The above statement returns a random element from an array without needing to know the length of the array. I could include it in my bag of tricks, since it would resemble sampling, especially if I sample a certain number of times.

Sampling with replacement means picking an element e from a set S without removing it. With sets, that amounts to just choosing elements from a set while allowing repetition. We don’t even need numbers. What about letters? Let’s re-define the set S thusly:

S:={a,b,c,d,e,f,g,h,i,j,k,l}

Now, let’s define a function called “pick[n]” which chooses some quantity of letters from S by passing the number of choices to it as “n”:

pick[n_]:=Table[S[[Random[Integer,{1,Length[S]}]]],{n}]

That’s a lot of nested brackets. But recall that the Table[] function generated a set of size n by executing the function in the first parameter n times, and returning the result as an array. But here, the function is passed into the Random[] function, which determines the array index of the element chosen from S. So, two calls to pick returned these for me:

pick[4] {b,e,a,d} pick[4] {h,g,h,d}

So, as you can see, we have repetition.