From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Porter Newsgroups: gmane.emacs.devel Subject: Re: Add seq-shuffle Date: Mon, 16 Sep 2024 14:17:14 -0500 Message-ID: <14bc4905-38b4-459d-8522-7cc33bbadd18@alphapapa.net> References: <87msk8p4mb.fsf@dataswamp.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18213"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: emacs-devel@gnu.org To: incal@dataswamp.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Sep 16 21:18:14 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sqHEi-0004US-5h for ged-emacs-devel@m.gmane-mx.org; Mon, 16 Sep 2024 21:18:13 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqHE5-0005dM-1K; Mon, 16 Sep 2024 15:17:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqHDx-0005Zm-LA for emacs-devel@gnu.org; Mon, 16 Sep 2024 15:17:26 -0400 Original-Received: from skyblue.cherry.relay.mailchannels.net ([23.83.223.167]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqHDv-0005DE-S4 for emacs-devel@gnu.org; Mon, 16 Sep 2024 15:17:25 -0400 X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net Original-Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 09F0B8C11A; Mon, 16 Sep 2024 19:17:17 +0000 (UTC) Original-Received: from pdx1-sub0-mail-a209.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 9642484634; Mon, 16 Sep 2024 19:17:16 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1726514236; a=rsa-sha256; cv=none; b=O3YeJ3DMLdNqMTNVRBKzPm+AUov68iWkvnd6WgsmYdPcCBxGT7G0PDRBsK+4iMDQUo6CqU 1APRisWRcELHQN1RU5h2RjQqnHxKFLR/zfTj2/qoEFuuRhbTZrH+HBfU0xUoHjbQ0ToXZF 1A56dRkZBBgxkJGE+uj5zc8k6jvbK7tyjTID24cv6x6tPX0fAn9HWfJfzc/Fu16mR0PdH6 EsXSXyqP//t8l5MQX0y6W294UDM/Y9SF3dNQTBzn0eMzP0qGkzgy8lPq7O1H3ONn8pm2Gn YorX+3EgzZWTzG4Qsf0bNN1b5zaPOgzBkBUVlH6rV5bcKAdNzYXAoVQLT3vrsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1726514236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=olVNRghK1iQnu39/pBc8whS2BrzE8v4z/E6JLwSXANA=; b=mKkxNjj1QVIKRlwQDm2E3X60t8BmIJ/HO5xGzFmdnDXc1VQRC+T+65ZW/KxGA/9RjaLvHk QaUEj0bipeTvG/GbtCLk6/p8Fu+hklx5m+9MavCdv6FvzYelbjLMFnYAqJqDS7GkKF4Tbu LtDF+bTyYXhTzVGQYViV2PdEgEYgBfjM5jpuh4EYKalExjwod3ATuqfb45YEcBlX3DmiOf 6zfufNRibrjAdH5/7aR+Dg+RWLOC8qWMsg8fl9k4f7TqzDhoorc88PmsWsnXIdbUopVkLH iAhhRSlN06QhIr2Rd6vYth+YT9VSYDepF2etAfq6IrcIv3LgKdNLrDLOQDQY5g== ARC-Authentication-Results: i=1; rspamd-b5ccff48b-gbq9l; auth=pass smtp.auth=dreamhost smtp.mailfrom=adam@alphapapa.net X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|adam@alphapapa.net X-MailChannels-Auth-Id: dreamhost X-Keen-Bottle: 23bb922d39ff4643_1726514236828_1379753188 X-MC-Loop-Signature: 1726514236828:1186009121 X-MC-Ingress-Time: 1726514236828 Original-Received: from pdx1-sub0-mail-a209.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.116.150.218 (trex/7.0.2); Mon, 16 Sep 2024 19:17:16 +0000 Original-Received: from [10.66.143.53] (unknown [91.193.232.98]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: adam@alphapapa.net) by pdx1-sub0-mail-a209.dreamhost.com (Postfix) with ESMTPSA id 4X6vmq5tTczMG; Mon, 16 Sep 2024 12:17:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alphapapa.net; s=dreamhost; t=1726514236; bh=olVNRghK1iQnu39/pBc8whS2BrzE8v4z/E6JLwSXANA=; h=Date:To:Cc:Subject:From:Content-Type:Content-Transfer-Encoding; b=b5T+h338bfhVphPWPbDxGN3UvHQTFqxQASX0lSMSL2A10LbJi78BsDCK2/RnT1B7W NByfL2436xtLSu/wQZAinixOVpA262gPYZuFIBLX/DxyutFob+NLHrau40x/1Cov8U R3zNkoUC6oCocP7Ar6rIxwkc4CpnhFpBLK3mQh8VOhsAkPB9+3mRHNdGgfwNu+nsxF 3/yFf5bGtXwug6jKsXqpjYnbDa/saHmGP2v7jTGArAW2wQx2fMCQVdxCPR7BFOe6SR jP8ZpABJWzqdWoTQNSfgR+9c5zBQP8UQIOeCdE52G/2WotUfwRtbS509EwfWamxCVq MwAnaeF0OMmew== Content-Language: en-US In-Reply-To: <87msk8p4mb.fsf@dataswamp.org> Received-SPF: neutral client-ip=23.83.223.167; envelope-from=adam@alphapapa.net; helo=skyblue.cherry.relay.mailchannels.net X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:323674 Archived-At: Hi Emanuel, That's a neat and concise solution. It seems to produce a decently random sorting, but I'd guess that it may not perform well for large sequences. For example: (let (comparisons) (list :result (seq-sort (lambda (a b) (push (cons a b) comparisons) (zerop (random 2))) (number-sequence 0 10)) :num-comparisons (length comparisons))) ;; (:result (6 0 9 1 5 10 8 2 7 3 4) :num-comparisons 26) In testing that expression repeatedly, I see that the number of comparisons varies between about 23 and 26. Thanks for pointing it out, though. It's good to know that it exists and in what circumstances it could be useful. --Adam