Path: ...!feeds.phibee-telecom.net!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!cleanfeed4-a.proxad.net!nnrp1-2.free.fr!not-for-mail Date: Sat, 24 Aug 2024 15:08:54 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: permutation sur N quelconque Newsgroups: fr.sci.maths References: <66c9c459$0$3383$426a74cc@news.free.fr> Content-Language: fr, en-US From: robby In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Lines: 33 Message-ID: <66c9db66$0$3708$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 24 Aug 2024 15:08:54 CEST NNTP-Posting-Host: 91.168.150.105 X-Trace: 1724504934 news-2.free.fr 3708 91.168.150.105:45182 X-Complaints-To: abuse@proxad.net Bytes: 2068 Le 24/08/2024 à 14:49, efji a écrit : >> from numpy import random je parle de programmer vraiment l'algo ( en C, GLSL, assembleur )... pas d'utiliser un package tout fait (et possiblement couteux). > Mais le "sans boucle" me laisse perplexe :) .... et sans stockage de la permutation, j'ai oublié de préciser. xorshift(index) , linearcongruence(index), etc sont de telles opérations directes sans boucle ni stockage. Bref, ce que je recherche est une fonction de hashage. Sur 2^n , ce sont souvent naturellement des permutations. sur n quelconque, obtenir l'uniformité est déjà pas simple, et que ce soit une permutation non plus. Pour certaines valeurs, par ex 12 = 4x3, j'envisage des solutions, genre a0 = hash4(i,seed0); a1 = hash4(i,seed1); if (a1==3) a1 = hash4(3,seed1); // is hash3 return a0 + a1*4; mais c'est difficilement généralisable. a noter que les hash4 peuvent consister a récupérer des paires de bits dans un unique hash entier... s'il est vraiment de bonne qualité ( randomness pour tous les sous-groupes de bits ). -- Fabrice