From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11134 invoked by alias); 10 May 2010 11:15:09 -0000 Received: (qmail 11100 invoked by uid 22791); 10 May 2010 11:15:06 -0000 X-SWARE-Spam-Status: No, hits=0.4 required=5.0 tests=AWL,BAYES_40 X-Spam-Check-By: sourceware.org Received: from up.nbi.dk (HELO mail2.nbi.dk) (130.225.212.6) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 10 May 2010 11:14:56 +0000 Received: from [192.168.9.216] (unknown [193.206.22.97]) by mail2.nbi.dk (Postfix) with ESMTP id 1BC0C3C95F for ; Mon, 10 May 2010 13:14:54 +0200 (CEST) Message-ID: <4BE7EAAD.20603@webdrake.net> Date: Mon, 10 May 2010 11:15:00 -0000 From: Joseph Wakeling User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4 MIME-Version: 1.0 To: gsl-discuss@sourceware.org Subject: Flat (uniform) random distribution and some development/contribution queries Content-Type: multipart/mixed; boundary="------------070706060800060809000801" Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2010-q2/txt/msg00010.txt.bz2 This is a multi-part message in MIME format. --------------070706060800060809000801 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 1305 Hello all, While browsing the source code I noticed that the flat/uniform distribution provided in GSL's randist.h provided only a 'half-open' interval [a,b) akin to what gsl_rng_uniform() provides for [0,1) and not also an 'open' interval (a,b) akin to what gsl_rng_uniform_pos() provides for (0,1). So I wrote a couple of extra functions, which are attached as a git patch in case they are useful/welcome. (Apologies if instead they are stupid and I'm missing something; this is a very off-the-cuff contribution, but it seemed easy enough to deliver and trivial enough to not mind if it's rejected:-) More general development question, which is the main reason for joining this list. A project I'm working on needs to employ random sampling on several occasions: to be precise, the case of selecting n unique records from the set {1, ..., N}, as described in these articles: http://doi.acm.org/10.1145/358105.893 http://doi.acm.org/10.1145/23002.23003 http://doi.acm.org/10.1145/79505.356313 The functionality seems generic and useful enough that I was surprised not to find a library available. Anyway, it seems like it would be easy enough to implement as part of GSL. Is there interest in having this? If so, I'll map out a brief API description and/or sample code. Best wishes, -- Joe --------------070706060800060809000801 Content-Type: text/plain; name="0001-Flat-uniform-distribution-over-open-interval.patch.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Flat-uniform-distribution-over-open-interval.patch.txt" Content-length: 3229 RnJvbSAwOWU1Y2RjMGRkMzk5MWU2OTk4MmJjZTY4NzJlZGYyMDFmMjVlN2Vk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NlcGggUnVzaHRv biBXYWtlbGluZyA8am9lQHdlYmRyYWtlLm5ldD4KRGF0ZTogTW9uLCAxMCBN YXkgMjAxMCAwOToxMzoxMCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEZsYXQg KHVuaWZvcm0pIGRpc3RyaWJ1dGlvbiBvdmVyIG9wZW4gaW50ZXJ2YWwuCgoq IFR3byBuZXcgZnVuY3Rpb25zIHRoYXQgcHJvdmlkZSByYW5kb20gdmFyaWF0 ZXMgYW5kIHRoZQogIHBkZiBvZiBhIGZsYXQgKHVuaWZvcm0pIGRpc3RyaWJ1 dGlvbiBvdmVyIHRoZSBvcGVuCiAgaW50ZXJ2YWwgKGEsIGIpLgoKKiBDb3Jy ZWN0ZWQgYSBwb3RlbnRpYWxseSBtaXNsZWFkaW5nIGNvbW1lbnQgaW4gdGhl CiAgZnVuY3Rpb24gZm9yIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gb24gdGhl IGhhbGYtY2xvc2VkCiAgaW50ZXJ2YWwgW2EsIGIpLgotLS0KIHJhbmRpc3Qv ZmxhdC5jICAgICAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiByYW5kaXN0L2dzbF9yYW5kaXN0LmggfCAgICAyICsrCiAy IGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvcmFuZGlzdC9mbGF0LmMgYi9yYW5kaXN0L2Zs YXQuYwppbmRleCA5OTYzNjZlLi4wYTcyYTg1IDEwMDY0NAotLS0gYS9yYW5k aXN0L2ZsYXQuYworKysgYi9yYW5kaXN0L2ZsYXQuYwpAQCAtMzQsNyArMzQs NyBAQCBnc2xfcmFuX2ZsYXQgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBk b3VibGUgYSwgY29uc3QgZG91YmxlIGIpCiB7CiAgIGRvdWJsZSB1ID0gZ3Ns X3JuZ191bmlmb3JtIChyKTsKIAotICAvKiBBIHVuaWZvcm0gZGlzdHJpYnV0 aW9uIG92ZXIgW2EsYl0gKi8KKyAgLyogQSB1bmlmb3JtIGRpc3RyaWJ1dGlv biBvdmVyIHRoZSBoYWxmLW9wZW4gaW50ZXJ2YWwgW2EsYikgKi8KIAogICBy ZXR1cm4gYSAqICgxIC0gdSkgKyBiICogdTsKIH0KQEAgLTUxLDMgKzUxLDM0 IEBAIGdzbF9yYW5fZmxhdF9wZGYgKGRvdWJsZSB4LCBjb25zdCBkb3VibGUg YSwgY29uc3QgZG91YmxlIGIpCiAgICAgICByZXR1cm4gMDsKICAgICB9CiB9 CisKKworLyogVGhpcyBpcyB0aGUgdW5pZm9ybSBkaXN0cmlidXRpb24gaW4g dGhlIHJhbmdlIChhLCBiKQorCisgICBwKHgpIGR4ID0gMS8oYi1hKSBkeCAg IGlmICBhIDwgeCA8IGIKKyAgIC4uLi4uICAgPSAwICAgICAgICAgICAgb3Ro ZXJ3aXNlCisKKyAqLworCitkb3VibGUKK2dzbF9yYW5fZmxhdF9vcGVuIChj b25zdCBnc2xfcm5nICpyLCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91Ymxl IGIpCit7CisgIGRvdWJsZSB1ID0gZ3NsX3JuZ191bmlmb3JtX3BvcyAocik7 CisKKyAgLyogQSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvdmVyIHRoZSBvcGVu IGludGVydmFsIChhLCBiKSAqLworCisgIHJldHVybiBhICogKDEgLSB1KSAr IGIgKiB1OworfQorCitkb3VibGUKK2dzbF9yYW5fZmxhdF9vcGVuX3BkZiAo ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYikKK3sK KyAgaWYgKHggPCBiICYmIHggPiBhKQorICAgIHsKKyAgICAgIHJldHVybiAx IC8gKGIgLSBhKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICByZXR1 cm4gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9yYW5kaXN0L2dzbF9yYW5k aXN0LmggYi9yYW5kaXN0L2dzbF9yYW5kaXN0LmgKaW5kZXggNmY0YjBlMy4u NzIxOGM3NiAxMDA2NDQKLS0tIGEvcmFuZGlzdC9nc2xfcmFuZGlzdC5oCisr KyBiL3JhbmRpc3QvZ3NsX3JhbmRpc3QuaApAQCAtNjgsNiArNjgsOCBAQCBk b3VibGUgZ3NsX3Jhbl9mZGlzdF9wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25z dCBkb3VibGUgbnUxLCBjb25zdCBkb3VibGUgbnUyKTsKIAogZG91YmxlIGdz bF9yYW5fZmxhdCAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBh LCBjb25zdCBkb3VibGUgYik7CiBkb3VibGUgZ3NsX3Jhbl9mbGF0X3BkZiAo ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYik7Citk b3VibGUgZ3NsX3Jhbl9mbGF0X29wZW4gKGNvbnN0IGdzbF9ybmcgKiByLCBj b25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpOworZG91YmxlIGdzbF9y YW5fZmxhdF9vcGVuX3BkZiAoZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBj b25zdCBkb3VibGUgYik7CiAKIGRvdWJsZSBnc2xfcmFuX2dhbW1hIChjb25z dCBnc2xfcm5nICogciwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBi KTsKIGRvdWJsZSBnc2xfcmFuX2dhbW1hX2ludCAoY29uc3QgZ3NsX3JuZyAq IHIsIGNvbnN0IHVuc2lnbmVkIGludCBhKTsKLS0gCjEuNy4wLjQKCg== --------------070706060800060809000801--