Random quotes in matrix block type
You could query for your two blocks individually.

{% set quoteBlock = entry.intro.type('quote').first() %}
{% set textBlock = entry.intro.type('text').order('RAND()').first() %}

&lt;blockquote&gt;
    &lt;p&gt;{{ quoteBlock.quote|raw }}&lt;/p&gt;
    &lt;footer&gt;{{ quoteBlock.caption }} &lt;/footer&gt;
&lt;/blockquote&gt;

&lt;div&gt;{{ textBlock.column1 }}&lt;/div&gt;
&lt;div&gt;{{ textBlock.column2 }}&lt;/div&gt;