Здравствуйте, DemAS,
Я бы написал процедурку с приблизительно таким кодом:
FOR SELECT [table columns] FROM Table WHERE (Readed = 0) AND (Rand >= 0.5) INTO [utput columns] DO SUSPEND;
Где rand — UDF (в InterBase'е в стандартной библиотеке ib_udf):
rand
Returns a random number between 0 and 1. The current time is used to seed the random
number generator.
DECLARE EXTERNAL FUNCTION rand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ’IB_UDF_rand’ MODULE_NAME ’ib_udf’;
Если в FireBird ее нет, то можно написать свою.