DISTINCT is a bad idea: you change the semantics of the statement and the optimizer may have to throw in a SORT operator. Thus, the result table may have to be materialized and that wrecks performance unnecessarily.
What's the problem with the approach that the OP cited, i.e. Serge's suggestion to introduce a join by adding "TABLE ( VALUES(1) ) AS x(n)" in the outer-most FROM clause?
Another approaches is to add a function call to the select list, e.g. CREATE VIEW ... AS SELECT ..., RAND() FROM ... Essentially, the idea is to change the view definition in such a way that prevents DB2 from establishing a backward-mapping from the columns in the view to the columns of the underlying base table(s). If DB2 doesn't figure out this backward mapping, you have a readonly (aka non-updatable) view.
Note that making a view readonly does not influence the locking behavior on the base table. Shared locks are still acquired and if someone else runs updates on the base table, those shared locks may collide with the U and X locks.
p.s: In literature, people speak about "updatable views" - not "deletable" ones.