This is a really simple project.. a PWM-flickered superbright (I used a 1watt Luxeon) LED strobe for halloween decorations. Every 2-10 seconds at random, a sequence of PWM levels are fed out, to simulate the flash of lightning. Feel free to mess with the delays, just be careful if powering the LED for long periods, as a series resistor to regulate LED current is inefficient and generates a lot of heat which will damage components.
Note that driving a power LED by using a power resistor is not recommended.. but since we are doing short pulses, heat isn't as large an issue. Longer "on" times may present issues. In addition, for the 5v supply, I tap directly off the 5v regulator. This circuit will pull 350ma for just the LED, in addition to more from the series resistor. I wouldn't recommend drawing that much power through the regular circuitboard traces on an Arduino. If you use an external power supply, remember to connect the grounds! You can use a different supply voltage for the LED as long as you adjust the series resistor accordingly, or multiple LED's in series. The TIP120 can handle quite a bit, particularly as it's being used as a switch in this configuration. If you're going to be doing much interfacing to arduinos, I'd get a few of them. For lower current demand, I'd recommend 2N2222 or 3904's... pennies each and a perfect little switching transistor for projects.
TIP120 is a Darlington transistor, but any NPN that can handle 500ma or more will likely work. To create a 5 Ohm resistor, I connected two 10 ohm resistors in parallel, which also shares the wattage (heat) dissipation. Remember to keep heat in mind, parallel resistors of small wattage can replace a single higher wattage one in most cases.
Remember also to check the pinout of your particular transistor type, many small-signal types order pins C-B-E, while others (like TIP120) order their pins B-C-E... This circuit is a nice general-purpose switching circuit, usable for almost any load without modification. Inductive loads like motors or selenoids will require a diode to supress voltage spikes.

int flash[]={255,128,64,255,64,255,255,0,128,0};
void setup() {
// initialize the digital pin as an output:
pinMode(11, OUTPUT);
Serial.begin(9600);
// Seed random number generator with noise.
randomSeed(analogRead(0));
}
void loop() {
// loop through the array with our flicker pattern
for(int i=0; i<10; i++) {
analogWrite(11,flash[i]);
delay(100);
}
// wait a random time from 2 to 10 seconds
delay(random(2,10)*1000);
}
This is meant as a temporary circuit, any longer-term design should use a constant-current cicuit to drive the LED....