If you change absolutely no statistics, then a plan can still change.
For example, if you do:
select * from T where date_col > sysdate
then as sysdate advances, the costing of this query may change. In particular, if (say) the high value for date_col (ie, from the optimizer statistics) is 01-SEP-2017, then as sysdate advances past Sep 1st, the estimate rows will get lower and lower each time the query is parsed, which of course could lead to a different plan.
And in 12c, there's a *whole* lot of reasons why a plan can change from execution to execution. There's a nice whitepaper on it here
https://www.doag.org/formes/pubfiles/5055437/docs/Konferenz/2013/vortraege/Oracle%20Datenbank/2013-DB-Maria_Colgan-Oracle_Optimizer__What_s_new_in_Oracle_Database_12c_-Manuskript.pdf and we improved the control over the "variability" of plans a lot in 12.2