修正するとすればこんな感じかな

if ((r = rand()) <= (double)3/10) a();
else if (r <= (double)8/10) b();
else c();