Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 21318)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -38,7 +38,7 @@
 
 $core_actions_get = array(
 	'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
-	'autocomplete-user', 'dashboard-widgets', 'logged-in',
+	'autocomplete-user', 'dashboard-widgets', 'logged-in', 'get-random-password',
 );
 
 $core_actions_post = array(
Index: wp-admin/css/wp-admin.dev.css
===================================================================
--- wp-admin/css/wp-admin.dev.css	(revision 21318)
+++ wp-admin/css/wp-admin.dev.css	(working copy)
@@ -2946,7 +2946,8 @@
 }
 
 #submitpost #ajax-loading,
-#submitpost .ajax-loading {
+#submitpost .ajax-loading,
+#createuser .ajax-loading {
 	vertical-align: middle;
 }
 
@@ -4818,6 +4819,10 @@
 	width: 25em;
 }
 
+#createuser .form-field input[type="button"] {
+	width: auto;
+}
+
 /*------------------------------------------------------------------------------
   19.0 - Tools
 ------------------------------------------------------------------------------*/
Index: wp-admin/includes/ajax-actions.php
===================================================================
--- wp-admin/includes/ajax-actions.php	(revision 21318)
+++ wp-admin/includes/ajax-actions.php	(working copy)
@@ -1801,3 +1801,7 @@
 	update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
 	wp_die( 1 );
 }
+
+function wp_ajax_get_random_password() {
+	wp_die( wp_generate_password() );
+}
Index: wp-admin/js/user-profile.dev.js
===================================================================
--- wp-admin/js/user-profile.dev.js	(revision 21318)
+++ wp-admin/js/user-profile.dev.js	(working copy)
@@ -73,6 +73,19 @@
 				});
 			});
 		}
+
+		$('#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();
+				$('#send_password').prop('checked', true);
+			});
+		});
 	});
 
 })(jQuery);
Index: wp-admin/user-new.php
===================================================================
--- wp-admin/user-new.php	(revision 21318)
+++ wp-admin/user-new.php	(working copy)
@@ -343,6 +343,7 @@
 	<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" />
+		<span class="hide-if-no-js"><input class="button-secondary" type="button" id="auto_generate_password" value="<?php _e( '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 />
