user18905: I currently have a for loop that loops 300 times and then moves on.
Instead, I'd like that loop to run for a specific number of minutes, instead.
Here's the current loop, for reference.
for(int i = 1; i<300; i++){
  if (kill() == true){ break; }

  strip.setPixelColor(1, strip.Color(random(100,255),random(100,255),random(100,255)));
  strip.show();

  tone(TONE, notes[random(0,3)]);
  delay(100);
}

Also, I have an RTC that's used elsewhere in the app, so real actual time is available for use if it makes sense to do that...though I'd love to know of a way to do it without an RTC module for future projects.

user19515: You can use a variable that is incremented each time you perform the loop, then you need only to change the loop from using a for to a while. 
For example:
   int incremented_variable = 0;
   int incremented_value = 100;
   int max_value = 1000;  

   while(incremented_variable < max_value){
   if (kill() == true){ break; }

   strip.setPixelColor(1, strip.Color(random(100,255),random(100,255),random(100,255)));
   strip.show();

   tone(TONE, notes[random(0,3)]);

   delay(100);
   incremented_variable = incremented_variable + incremented_value;
   }


EDIT: I have just read your update on the question. 
You can then use a while with a boolean flag that help you to end the loop or if you prefer, you can keep track of the time by calling the method: millis().

user19597: Using this example:
http://playground.arduino.cc/Code/ElapsedMillis
You could try something like:
#include <elapsedMillis.h>

elapsedMillis timeElapsed;
unsigned int interval = 60000; //one minute in ms

while(timeElapsed < interval){
    //do stuff
}

Depending on how accurate you want to be, you might want to opt for a similar method using the RTC.

user313: Here is an example that will run for 5 minutes. Note that the loop will begin executing anytime before the time limit is up, including 1 msec before; it can't cut-off something happening at the 5-minute mark, meaning the timing precision will be limited to the duration of the code in the loop.
Update: My first suggestion had a bug related to the 50-some-odd days roll-over period of the millis() clock. This one is more robust:
uint32_t period = 5 * 60000L;       // 5 minutes

for( uint32_t tStart = millis();  (millis()-tStart) < period;  ){
   doStuff();
   moreStuff();
}


18905: <p>I currently have a <code>for</code> loop that loops 300 times and then moves on.</p>

<p>Instead, I'd like that loop to run for a specific number of minutes, instead.</p>

<p>Here's the current loop, for reference.</p>

<pre class="lang-c prettyprint-override"><code>for(int i = 1; i&lt;300; i++){
  if (kill() == true){ break; }

  strip.setPixelColor(1, strip.Color(random(100,255),random(100,255),random(100,255)));
  strip.show();

  tone(TONE, notes[random(0,3)]);
  delay(100);
}
</code></pre>

<p>Also, I have an RTC that's used elsewhere in the app, so real actual time is available for use if it makes sense to do that...though I'd love to know of a way to do it without an RTC module for future projects.</p>
 19515: <p>You can use a variable that is incremented each time you perform the loop, then you need only to change the loop from using a <code>for</code> to a <code>while</code>. </p>

<p>For example:</p>

<pre><code>   int incremented_variable = 0;
   int incremented_value = 100;
   int max_value = 1000;  

   while(incremented_variable &lt; max_value){
   if (kill() == true){ break; }

   strip.setPixelColor(1, strip.Color(random(100,255),random(100,255),random(100,255)));
   strip.show();

   tone(TONE, notes[random(0,3)]);

   delay(100);
   incremented_variable = incremented_variable + incremented_value;
   }
</code></pre>

<hr>

<p><strong>EDIT:</strong> I have just read your update on the question. </p>

<p>You can then use a while with a boolean flag that help you to end the loop or if you prefer, you can keep track of the time by calling the method: <code>millis()</code>.</p>
 19597: <p>Using this example:</p>

<p><a href="http://playground.arduino.cc/Code/ElapsedMillis" rel="nofollow">http://playground.arduino.cc/Code/ElapsedMillis</a></p>

<p>You could try something like:</p>

<pre><code>#include &lt;elapsedMillis.h&gt;

elapsedMillis timeElapsed;
unsigned int interval = 60000; //one minute in ms

while(timeElapsed &lt; interval){
    //do stuff
}
</code></pre>

<p>Depending on how accurate you want to be, you might want to opt for a similar method using the RTC.</p>
 313: <p>Here is an example that will run for 5 minutes. Note that the loop will begin executing anytime before the time limit is up, including 1 msec before; it can't cut-off something happening at the 5-minute mark, meaning the timing precision will be limited to the duration of the code in the loop.</p>

<p>Update: My first suggestion had a bug related to the 50-some-odd days roll-over period of the millis() clock. This one is more robust:</p>

<pre><code>uint32_t period = 5 * 60000L;       // 5 minutes

for( uint32_t tStart = millis();  (millis()-tStart) &lt; period;  ){
   doStuff();
   moreStuff();
}
</code></pre>
