Adsense Ad at Random Position in a Posts Page

This code is made to output an adsense ad (or any other block of output) at a random position within the loop, with the restriction to a preset number of possible positions.

<?php $ad_positions = array(1,2,4); // array of preset possible ad positions

do { $rnd_ad = $ad_positions[rand(0,count($ad_positions)-1)]; } while ($rnd_ad >= $wp_query->post_count); 
// to make sure that the random output fits into the available number of posts ?>

<?php if(have_posts()) : while(have_posts()) : the_post(); // start of the loop // ?>

some part of the post output here

  <?php if( ($wp_query->current_post+1) == $rnd_ad ) : ?>
    adsense code here
  <?php endif; ?> 

more post output here

<?php endwhile; endif; // end of the loop // ?>

Thanks to the tutorials of …

Numbering Posts

To give posts a continuous number in index pages or archives, try this little piece of code:

global $query_string;
  $all_post_query = new WP_Query($query_string.'&posts_per_page=-1');
    $count_posts = $all_post_query->post_count;
  $this_post_nr = 1 + $wp_query->current_post + (get_query_var('paged')?(get_query_var('paged')-1) : 0) * get_option('posts_per_page');
echo $this_post_nr.' of '.$count_posts.' in this selection of posts.';

Place it within the loop;
condition: needs to be adjusted for any custom query.