Fiddle with output

Template for writing a fiddle which can display a result, rather than having to output it to the console.

by Andreas Renberg

HTML

<pre id="output"></pre>

JavaScript

function out()
{
    var args = Array.prototype.slice.call(arguments, 0);
    document.getElementById('output').innerHTML += args.join(" ") + "\n";
}

var lowerLetters = "abcdefghijklmnopqrstuvwxyz";
var upperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numbers = "0123456789";
var symbols = "`~!@#$%^&*()_+-={}|[]\\:\";'<>?,./";
var allCharacters = lowerLetters + upperLetters + numbers + symbols;

String.prototype.randomChar = function() {
    return this[Math.floor(this.length * Math.random())];
}
Array.prototype.shuffle = function() {
    this.sort(function(item1, item2) {
        return (Math.random() >= 0.5) ? 1 : -1;
        //return .5 - Math.random();
    })
}

var minLength = 15;
var result = [];

result.push(lowerLetters.randomChar());
result.push(upperLetters.randomChar());
result.push(numbers.randomChar());
result.push(symbols.randomChar());
while(result.length < minLength) {
    result.push(allCharacters.randomChar());
}
result.shuffle();

out(result.join(""));