We could spawn a full discussion on this, but here is my take:
CQWP or DVWP (or the more powerful, SharePoint 2010 specific web part XSLTListView WebPart) could do the job, you could even consider the CoreSearchResults web part. The reasoning behind choosing one or the other could be:
- Source of data: Single list? Multiple lists? Custom content type?
Current Sub-Site, Cross Sub-Sites, or even Cross Site Collections or
the whole Farm? In either cases you need to consider:
- XSLTListView web part is easy to use with a single list or linked lists - manual process via SharePoint Designer 2010.
- CQWP - cross sites (!webs, not site collection), also Content Type based queries, selectable fields (via slots), customizable XSLT
(3 of them) - probably best bet in your case (see here for an
example of how to add custom functions, such as a random function
- CoreSearchResults - works cross site collections too, various selection possibilities - require some administration permissions
and a proper Search SA configured, e.g. Search Scopes to match your
- Customization capabilities - all XSLT based web parts enable you to customize output, some of them via browser UI (CQWP or CoreSearchResults) or via SPD 2010 (XSLTListView / DataView)
Finally, it depends on your possibilities & constraints, skills, time you want to invest.