If the questions are on the same page...
1) Directly after Q1, insert a copy of Q1 which has random answer order and is filtered by Q1.
2) Filter Q2 by the hidden question.
3) Add the following script to the hidden question. This will put a listener on Q1 so, when changes are detected, only the first visible checkbox of the hidden question is checked. This effectively displays a single random row of Q2, filtered on Q1 while accommodating a "mandatory" setting on Q2.
Code:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
// Identify the questions
var qHidden = $('#question{QID}');
var q1 = $(qHidden).prevAll('.multiple-opt:eq(0)');
// Hide the hidden question
$(qHidden).css({
'position': 'absolute',
'left': '-999em',
'height': '0'
})
// Listener on Q1
$('input.checkbox', q1).click(function(event){
// Reset the hidden question
$('input.checkbox', qHidden).each(function(i) {
$(this).prop('checked', false);
checkconditions($(this).attr('value'), $(this).attr('name'), $(this).attr('type'));
});
// Check the first visible box in the hidden question
var firstItem = $('li.question-item:visible:eq(0) input.checkbox', qHidden);
$(firstItem).click();
});
});
</script>
Sample survey attached: