I have a list of approx. 10000 items. The current situation is that every item has an associated weight (priority or importance). Now the smallest weight is -100
-100
If you're storing your data in a database, you can use SQL:
SELECT * FROM table ORDER BY weight*random() DESC LIMIT 1