GNT sans publicité, site mobile, fonctionnalitées exclusives...

gene de hasard

Le
remy
bonjour

l'idee de base consiste a faire la difference entre deux nb premier
j'aimerais bien avoir votre avis sur cette idee deja connue peut etre ?
pour les nb impairs une concatenation et l'on retaille a 8 bits
devrait aussi peut etre faire l'affaire java n'est pas vraiment adapte :(
merci remy


code java

import java.util.*;
import java.lang.*;
import java.math.*;

public class gene
{
public static void main(String args[])
{
if(args.length!=1)
{
System.out.println("generateur ");
System.out.println(" java gene nb_premier " );
System.out.println(" ex :java gene 3623 ");
return;
}
String strp=args[0];

BigInteger p=new BigInteger(strp);
BigInteger tmp_p=p;
BigInteger res;
BigInteger pow=new BigInteger("2");
int n=p.toString(2).length();
pow=pow.pow(n);

if(! p.isProbablePrime(100))
{
System.out.println(p+ " n'est pas un nb premier");

return;
}



while (true)
{
p=p.add(pow);
if(p.isProbablePrime(100))
{
res=p.subtract(tmp_p);
if(res.toString(2).length()<32)
{
System.out.print(res +" ");
}
else
{
System.out.println("ca arrive ");
}
tmp_p=p;
n=p.toString(2).length();
if (n>100){n=1;}
pow=new BigInteger("2");
pow=pow.pow(n);
}
}
}
}
Lire les 10 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
remy
Le #486506
une petit erreur dans le code
ca va plus vite et plus ""alelatoire""


import java.util.*;
import java.lang.*;
import java.math.*;

public class gene
{
public static void main(String args[])
{
if(args.length!=1)
{
System.out.println("generateur ");
System.out.println(" java gene nb_premier " );
System.out.println(" ex :java gene 7 ");
return;
}
String strp=args[0];

BigInteger p=new BigInteger(strp);
BigInteger tmp_p=p;
BigInteger res;
BigInteger pow=new BigInteger("2");
int n=p.toString(2).length();
pow=pow.pow(n);
boolean búlse;
if(! p.isProbablePrime(100))
{
System.out.println(p+ " n'est pas un nb premier");
return;
}



while (true)
{
p=p.add(pow);
if(p.isProbablePrime(100))
{
res=p.subtract(tmp_p);
if (b)System.out.print(res+" ");
tmp_p=p;
if (n>100){n=1;b=true;}
pow=new BigInteger("2");
pow=pow.pow(n);
}
n++;
}
}
}
remy
Le #485698
bonjour

une dernnier Maj avec un petit bia sur le chifre 1
si vous avez une idee je suis toujour preneur

import java.util.*;
import java.lang.*;
import java.math.*;

public class gene
{ static int tab[]={0,0,0,0,0,0,0,0,0,0};

public static void main(String args[])
{
if(args.length!=4)
{
System.out.println(" java gene cle_n0 cle_n1 cle_n2 qtDeNb " );
System.out.println(" cle_n0 = nb premier ");
System.out.println(" cle_n1 = nb de bit max des nb premier ");
System.out.println(" cle_n2 = puissance max de l'ecard entre deux nb
premier ");
System.out.println(" qtDeNb =nombre de tirage ");
System.out.println(" ex :java gene 3623 100 200 1000 ");
return;
}
BigInteger p=new BigInteger(args[0]);
if(! p.isProbablePrime(100))
{
System.out.println(p+ " n'est pas un nb premier"); return;
}
int taille=Integer.parseInt(args[1]);
int ecart=Integer.parseInt(args[2]);
int qt=Integer.parseInt(args[3]);

System.out.println("init ");
p=newGraine(p,taille);
System.out.println("debut ");
allea(p,ecart,qt);
affiche();
}

public static void allea(BigInteger p,int val, int qt)
{
BigInteger res ,tmp_p=p;
BigInteger pow=new BigInteger("2");
BigInteger on=new BigInteger("1");
boolean stop=true,impaire=true;
int nb=0,n=0;

while (stop)
{
p=p.add(pow);
if(p.isProbablePrime(100))
{
nb++;
res=p.subtract(tmp_p);
if(impaire)
{
res=res.subtract(on);
System.out.print(res+" ");
cteFreq(res.toString());
impaireúlse;
}
else
{
System.out.print(res+" ");
cteFreq(res.toString());
impaire=true;
}
cteFreq(res.toString());
tmp_p=p;
if (n>val){n=1;}
if(nb>qt){stopúlse;}
pow=new BigInteger("2");
pow=pow.pow(n);

}
n++;
}
//System.out.println("taille "+p.toString(2).length());
}
public static void affiche()
{
System.out.println();
System.out.println("*********** frequence *************");
for (int i=0;i {

System.out.print(tab[i]+" ");

}
System.out.println();
}
public static void cteFreq(String s)
{
for (int i=0;i {
switch(s.charAt(i))
{
case '0':
tab[0]++;
break;
case '1':
tab[1]++;
break;
case '2':
tab[2]++;
break;
case '3':
tab[3]++;
break;
case '4':
tab[4]++;
break;
case '5':
tab[5]++;
break;
case '6':
tab[6]++;
break;
case '7':
tab[7]++;
break;
case '8':
tab[8]++;
break;
case '9':
tab[9]++;
break;
}
}
}
public static BigInteger newGraine(BigInteger p,int taille )
{
BigInteger pow=new BigInteger("2");
int n =p.toString(2).length();
pow=pow.pow(n);
while (p.toString(2).length()<taille)
{
p=p.add(pow);

if(p.isProbablePrime(100))
{
System.out.print(".");
n=p.toString(2).length();
pow=new BigInteger("2");
pow=pow.pow(n);
}
}
System.out.println();
return p;
}
}
Kevin Drapel
Le #485697
une dernnier Maj avec un petit bia sur le chifre 1
si vous avez une idee je suis toujour preneur


Je ne sais pas si c'est très rapide comme générateur. Pour fixer son
degré d'aléa, il faudrait lui faire passer des tests statistiques.

http://csrc.nist.gov/rng/
http://random.com.hr/products/rando...ehard.html

remy
Le #485695
"Kevin Drapel" news:425bb575$
une dernnier Maj avec un petit bia sur le chifre 1
si vous avez une idee je suis toujour preneur


Je ne sais pas si c'est très rapide comme générateur. Pour fixer son
degré d'aléa, il faudrait lui faire passer des tests statistiques.

http://csrc.nist.gov/rng/
http://random.com.hr/products/rando...ehard.html


merci

sympa les liens j'en ai au moins pour 6 mois a coder tous les tests
a la vitesse ou j'avance cela va m'occuper un peu les doigts
mais il y a un biais lie a l'idee :-(
la difference de 2 nb premier ne peut faire qu'un nb pair
j'ai modifie un peu la fct
en gros je fais +1 et -1 histoire d'etre honnete mais cela
ne change pas grand chose

par contre j'ai de superbe ecart entre 2 inits "graines" differentes
ce qui me fait un peu plaisir

code modifie de la fct
a+ remy

public static void allea(BigInteger p,int val, int qt)
{
BigInteger res ,tmp_p=p;
BigInteger pow=new BigInteger("2");
BigInteger on=new BigInteger("1");
boolean stop=true,impaire=true,plus=true;
int nb=0,n=0;

while (stop)
{
p=p.add(pow);
if(p.isProbablePrime(100))
{
nb++;
res=p.subtract(tmp_p);
if(impaire)
{
if(plus)
{
res=res.add(on);
plusúlse;
}
else
{
res=res.subtract(on);
plus=true;

}
System.out.print(res+" ");
cteFreq(res.toString());
impaireúlse;
}
else
{
System.out.print(res+" ");
cteFreq(res.toString());
impaire=true;
}
cteFreq(res.toString());
tmp_p=p;
if (n>val){n=1;}
if(nb>qt){stopúlse;}
pow=new BigInteger("2");
pow=pow.pow(n);

}
n++;
}
//System.out.println("taille "+p.toString(2).length());
}


remy
Le #485694

sympa les liens j'en ai au moins pour 6 mois a coder tous les tests
a la vitesse ou j'avance cela va m'occuper un peu les doigts
mais il y a un biais lie a l'idee :-(


donc retravailler l'idee, elementaire comme dirait l'autre ...
il suffit de faire la somme des chiffres de la difference des deux nb
premiers
mod(2) avec ou sans la cuisine pour les nb impairs
a tester
si le code vous interesse je vous le posterai des qu'il sera fait

je fais une pause

remy

Publicité
Suivre les réponses
Poster une réponse
Anonyme