Display a random tag but using cron to control frequency of change

Use WordPress Transient API instead. This should be something like this (modified your existing shortcode function).

function skips_get_random_tags() {
    $transient_name="skips_random_tag";
    $transient_expiration = 60 * 60 * 24; // 1 day

    if ( false === ( $tag = get_transient( $transient_name ) ) ) { // tag isn't found in transient so get it from WP database
        $args = array('exclude' => '');
        $alltags = get_tags( $args );

        if(empty($alltags)){
            // no tag found show warning
            return false;
        }

        shuffle($alltags);   
        $tag = $alltags[0];

        set_transient( $transient_name, $tag, $transient_expiration ); // set the transient
    }

    return '<H5>Random App: <a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a></H5><p class="random-tag-description skips-answer">'.$tag->description.'</p>';

}

add_shortcode( 'random-tag', 'skips_get_random_tags' );

Explanation

What is happening here is. When you first run the code WordPress will pull the tag from the data base and set the transient which expiration is 24 hours. If the code runs again in next 24 hours the tag saved in transient will be down until it expired. When it gets expired then WordPress will run the query again and save a new tag.

Code is not tested. I feel that if you are showing it on sidebar you can try creating widget instead of shortcode. But for both ways solution would be similar.