with t as
(select '1' as rdx,
to_date('20150101', 'yyyy-mm-dd') as sdt,
to_date('20150531', 'yyyy-mm-dd') as edt
from dual)
select rdx as ctrdx,
add_months(sdt, level - 1) as sdt,
last_day(add_months(sdt, level - 1)) as edt
from t
connect by level < months_between(edt, sdt) + 1
and prior rdx = rdx
and prior dbms_random.random <> 0