From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a6b:1647:: with SMTP id 68-v6mr9739126iow.65.1533114501425; Wed, 01 Aug 2018 02:08:21 -0700 (PDT) X-Received: by 2002:aca:4787:: with SMTP id u129-v6mr42955oia.4.1533114501327; Wed, 01 Aug 2018 02:08:21 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!feeder4.usenet.farm!feed.usenet.farm!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g6-v6no24149itf.0!news-out.google.com!k71-v6ni1993itk.0!nntp.google.com!d7-v6no1740370itj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 1 Aug 2018 02:08:21 -0700 (PDT) In-Reply-To: <1a7509e9-dfb2-4939-9ae2-b522a4d41bae@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=2a02:1206:45c6:8b20:acc6:3f9:9536:5e14; posting-account=gRqrnQkAAAAC_02ynnhqGk1VRQlve6ZG NNTP-Posting-Host: 2a02:1206:45c6:8b20:acc6:3f9:9536:5e14 References: <5a66cd8a-e11d-4a59-bce1-8cc693b4160a@googlegroups.com> <979df026-05c7-447b-b5eb-010d85d61813@googlegroups.com> <1a7509e9-dfb2-4939-9ae2-b522a4d41bae@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <9c40251b-4144-494a-bd50-661dee57b474@googlegroups.com> Subject: Re: Simple hash or pseudo-random function From: gautier_niouzes@hotmail.com Injection-Date: Wed, 01 Aug 2018 09:08:21 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader02.eternal-september.org comp.lang.ada:54005 Date: 2018-08-01T02:08:21-07:00 List-Id: Just a followup on the last remark: as expected, GNAT's Hash function gives consecutive values for consecutive characters at the end of the string. People may want to append some constant string to get randomness in the hash code. with Ada.Text_IO; use Ada.Text_IO; with Ada.Strings.Hash; procedure Hash_test is begin Put_Line (Ada.Strings.Hash ("Abcd")'Image); Put_Line (Ada.Strings.Hash ("Bbcd")'Image); Put_Line (Ada.Strings.Hash ("Cbcd")'Image); Put_Line ("--"); Put_Line (Ada.Strings.Hash ("abCd")'Image); Put_Line (Ada.Strings.Hash ("abDd")'Image); Put_Line (Ada.Strings.Hash ("abEd")'Image); Put_Line ("--"); Put_Line (Ada.Strings.Hash ("abcD")'Image); Put_Line (Ada.Strings.Hash ("abcE")'Image); Put_Line (Ada.Strings.Hash ("abcF")'Image); end Hash_test; 14682274 795269473 1575856672 -- 3516536994 3516602593 3516668192 -- 3518636130 3518636131 3518636132 NB: same behavior for ObjectAda (reverting here to pure Ada 2005 syntax): with Ada.Text_IO; use Ada.Text_IO; with Ada.Strings.Hash; with Ada.Containers; use Ada.Containers; procedure Hash_test is begin Put_Line (Hash_Type'Image (Ada.Strings.Hash ("Abcd"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("Bbcd"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("Cbcd"))); Put_Line ("--"); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abCd"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abDd"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abEd"))); Put_Line ("--"); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abcD"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abcE"))); Put_Line (Hash_Type'Image (Ada.Strings.Hash ("abcF"))); end Hash_test; 803596578 1584183777 2364770976 -- 10484002 10549601 10615200 -- 12583138 12583139 12583140