Bash: How to list n random number of files (not head or tail)

I have a large directory containing numerous files of similar kind. I have to send few random files for auditing. These files should not be from the top or bottom (eg. not in head or tail). This is sub process which I am struggling.

I want to get any number of files. It may be 10 or 2 or 3, but should not be in any order.

For example from this list of files:

10 1121231243 12 3124234ewdf 31243345 xaa 112 1121231243214 3 3124234ewdffd 3124334532 xab 1121 112123124321442334 3124 31243 3124334532324 xac 112123 1121ewszf 3124234 312433 file1

I would like to get a random subset like in this instance:

1121 112123124321442334 3124 1121ewszf

Solution 1:

Use random sort (-R or --random-sort) and then head or tail:

ls | sort -R | head -10

Solution 2:

You can use sort -R to sort the list randomly, and then use the $RANDOM variable with head to get a random number of results:

ls | sort -R | head -n $(( $RANDOM % 10 + 1 ))

You will get 10 results or less (never zero)