I use a simple approach to generate the list. It may cost too much memory and can be improved using better algorithm.
\documentclass{article}
\usepackage[scale=0.8,centering]{geometry}
\usepackage[nofonts]{ctex}
\setCJKmainfont{SimSun}
\parindent=0pt
\usepackage{pgfcore,pgffor}
\pgfmathsetseed{2} % set seed if you wish
\begin{document}
\foreach \i in {1,...,1000}{%
\loop
\pgfmathrandominteger\randind{"4E00}{"9FA5}%
\ifcsname used\randind\endcsname\repeat
\expandafter\xdef\csname used\randind\endcsname{}%
\symbol{\randind}%
\ifnum\numexpr\i/25*25\relax=\i (\i)\par \fi
}
\end{document}

I tested myself, I know about 40% characters in the sheet. 8000 out of 20000 is more than expected, but there're 2103 simplified Hanzi with their unsimplified variants, say I know about 6000.
Well, due to some linguistics research, the most common 3800 characters can cover 99.9% general text, and 6600 cover 99.999%. Thus, 95% characters from Hongloumeng do not mean quite many. The most common 3500 Hanzi's from 《现代汉语常用字表》 cover 99.48% text, I think your friend can read all of them to make a proper test.