diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 72afed5d738bbdab7175257dc5a6179d40a7ac28..90bc47a62c3e1f355100ad219b27ec39c679b0f7 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -311,6 +311,8 @@ static void *moh_files_alloc(struct ast_channel *chan, void *params)
 			/* initialize */
 			memset(state, 0, sizeof(*state));
 			state->class = class;
+			if (ast_test_flag(state->class, MOH_RANDOMIZE))
+				state->pos = ast_random() % class->total_files;
 		}
 
 		state->origwfmt = chan->writeformat;