From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tyler Smith Newsgroups: gmane.emacs.help Subject: random predicate function Date: Mon, 13 Dec 2010 09:43:27 -0500 Message-ID: <87ipyxvils.fsf@guruji.demimonde> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1292251830 16065 80.91.229.12 (13 Dec 2010 14:50:30 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 13 Dec 2010 14:50:30 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Dec 13 15:50:26 2010 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PS9jO-0000xX-7W for geh-help-gnu-emacs@m.gmane.org; Mon, 13 Dec 2010 15:50:26 +0100 Original-Received: from localhost ([127.0.0.1]:60462 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PS9dH-0006FR-ST for geh-help-gnu-emacs@m.gmane.org; Mon, 13 Dec 2010 09:44:07 -0500 Original-Received: from [140.186.70.92] (port=47051 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PS9cv-0006Ez-UV for help-gnu-emacs@gnu.org; Mon, 13 Dec 2010 09:43:46 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PS9cu-0005RQ-VW for help-gnu-emacs@gnu.org; Mon, 13 Dec 2010 09:43:45 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:55433) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PS9cu-0005Qs-PG for help-gnu-emacs@gnu.org; Mon, 13 Dec 2010 09:43:44 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1PS9cs-0006CB-Dd for help-gnu-emacs@gnu.org; Mon, 13 Dec 2010 15:43:42 +0100 Original-Received: from 76.177.51.182 ([76.177.51.182]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 13 Dec 2010 15:43:42 +0100 Original-Received: from tyler.smith by 76.177.51.182 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 13 Dec 2010 15:43:42 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 35 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 76.177.51.182 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:i6B8DqRMzNOGGalKnRi1YtfVGK0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:77444 Archived-At: Hi, I'm trying to write a function that will randomly sort the paragraphs in a region. It seems to work ok, except that it doesn't seem very random. I think the function I'm using to randomly generate true and false values is sub-optimal. It often generates long strings of 't' or nil, such that either the paragraph order doesn't change at all for multiple calls to the function, or it simply reverses the order each time I call it. Any suggestions welcome! Thanks. Tyler Here is the function: (defun randomize-paragraphs (beg end) "Sort paragraphs in region randomly. Called from a program, there are two arguments: BEG and END (region to sort)." (interactive "r") (save-excursion (save-restriction (narrow-to-region beg end) (goto-char (point-min)) (sort-subr nil (function (lambda () (while (and (not (eobp)) (looking-at paragraph-separate)) (forward-line 1)))) 'forward-paragraph nil nil (lambda (tmp1 tmp2) (if (eq (mod (random) 2) 0) t nil))))))