Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 17522)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -172,6 +172,9 @@
 	$return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0';
 	die( $return );
 	break;
+case 'get_random_password' :
+	die( wp_generate_password() );
+	break;
 default :
 	do_action( 'wp_ajax_' . $_GET['action'] );
 	die('0');
Index: wp-admin/js/user-profile.dev.js
===================================================================
--- wp-admin/js/user-profile.dev.js	(revision 17522)
+++ wp-admin/js/user-profile.dev.js	(working copy)
@@ -60,6 +60,12 @@
 			}
 			$('#'+sel).attr('selected', 'selected');
 		});
+		// auto-generate password
+		$("#auto_generate_password").click(function(){
+			var btn = $(this);
+			btn.siblings('img').css('visibility','visible');
+			$.get(ajaxurl, {action: 'get_random_password'}, function(p){ btn.siblings('img').css('visibility','hidden'); $("#pass1, #pass2").val(p); check_pass_strength() } );
+		});
     });
 
 })(jQuery);
Index: wp-admin/user-new.php
===================================================================
--- wp-admin/user-new.php	(revision 17522)
+++ wp-admin/user-new.php	(working copy)
@@ -307,7 +307,7 @@
 <?php if ( apply_filters('show_password_fields', true) ) : ?>
 	<tr class="form-field form-required">
 		<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(twice, required)'); ?></span></label></th>
-		<td><input name="pass1" type="password" id="pass1" autocomplete="off" />
+		<td><input name="pass1" type="password" id="pass1" autocomplete="off" /> <span class="hide-if-no-js"><input class="button-secondary" type="button" id="auto_generate_password" value="Generate random password" /> <img class="ajax-loading" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ) ?>" /></span>
 		<br />
 		<input name="pass2" type="password" id="pass2" autocomplete="off" />
 		<br />
