Nombres aléatoires entiers ?

Signaler
Messages postés
3
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
9 février 2007
-
Messages postés
1
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
19 novembre 2006
-
Bonjour,

Je voudrais créer un petit programme qui calculerait la somme des nombres pairs compris entre deux nombres aléatoires compris entre 0 et 100. Mon problème est que je dois travailler avec des entiers or, la fonction Math.random() génère un nombre "double".

Ma question est donc la suivante : comment générer, en java, un nombre entier compris entre 0 et 100 ?

Merci d'avance,

Sébastien.
A voir également:

8 réponses

Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
96
Salut,

après un voyage dans le vaste et perilleu monde de la javadoc tu arais trouvé java.util.Random qui as les méthodes


nextInt
public int nextInt()

Returns the next pseudorandom, uniformly distributed
int

value from this random number generator's sequence. The general
contract of <tt>nextInt</tt> is that one <tt>int</tt> value is
pseudorandomly generated and returned. All 2<sup>32
</sup> possible <tt>int</tt> values are produced with
(approximately) equal probability. The method <tt>nextInt</tt> is
implemented by class <tt>Random</tt> as follows:
public int nextInt() { return next(32); }

<dd><dl> * Returns: : <dd>the next pseudorandom, uniformly distributed
int

value from this random number generator's sequence.
</dd></dl><hr /><!-- -->
nextInt
public int nextInt(int n)

Returns a pseudorandom, uniformly distributed <tt>int</tt> value
between 0 (inclusive) and the specified value (exclusive), drawn from
this random number generator's sequence. The general contract of
<tt>nextInt</tt> is that one <tt>int</tt> value in the specified range
is pseudorandomly generated and returned. All <tt>n</tt> possible
<tt>int</tt> values are produced with (approximately) equal
probability. The method <tt>nextInt(int n)</tt> is implemented by
class <tt>Random</tt> as follows:
public int nextInt(int n) {
if (n<=0)
throw new IllegalArgumentException(\"n must be positive\");

if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);

int bits, val;
do {
bits = next(31);
val = bits % n;
} while(bits - val + (n-1) < 0);
return val;
}

The hedge \"approximately\" is used in the foregoing description only
because the next method is only approximately an unbiased source of
independently chosen bits. If it were a perfect source of randomly
chosen bits, then the algorithm shown would choose <tt>int</tt>
values from the stated range with perfect uniformity.

The algorithm is slightly tricky. It rejects values that would result
in an uneven distribution (due to the fact that 2^31 is not divisible
by n). The probability of a value being rejected depends on n. The
worst case is n=2^30+1, for which the probability of a reject is 1/2,
and the expected number of iterations before the loop terminates is 2.

The algorithm treats the case where n is a power of two specially: it
returns the correct number of high-order bits from the underlying
pseudo-random number generator. In the absence of special treatment,
the correct number of low-order bits would be returned. Linear
congruential pseudo-random number generators such as the one
implemented by this class are known to have short periods in the
sequence of values of their low-order bits. Thus, this special case
greatly increases the length of the sequence of values returned by
successive calls to this method if n is a small power of two.

<dd><dl> * Parameters: : <dd>
n
- the bound on the random number to be returned. Must be
positive.
* Returns: : a pseudorandom, uniformly distributed <tt>int</tt>
value between 0 (inclusive) and n (exclusive).
* Throws: : <dd>
IllegalArgumentException
- n is not positive. * Since: : <dd>1.2
</dd></dl>

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Non membre
Dernière intervention
13 avril 2020

on pourrait pas faire une javadoc en français en partant sur le même principe que wikipedia.
Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
96
Salut,

pourquoi elle super simple à comprendre et hyper lisible le tout est de faire un effort

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
405
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
15 juillet 2014
19
Voila pour les anglophobes.
Il y a un projet de traduction ici : http://www.javadoconline.com/about.jsp?lang=fr&always=true

Mais attention, toute traduction peut altéré le sens.
Par exemple, "Inversion of Control", "Inversion du Contrôle" que neni "Injection de dépendance". La traduction à juste faire perdre la notion fondamentale.
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
19
C'est pourquoi il faut garder la version anglaise ;p
ou alors faire des recherches de tutos en français comprenant cette méthode

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
96
Salut,

Ouep j'ajouterai meme qu'il est mieux de prendre des cours d'anglais et de s'y mettre serieusement par ce que si l'on attend apres une traduction en FR d'une doc on peut resté bloqué tres tres tres longtemp.
Puis bon c'est pas la mort et en plus vu que developpement == anglais (sauf 1% des cas), il reste 2 choix :
1 on apprend l'anglais.
2 on arrete le dev.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
19
3 on anticipe en apprenant le mandarin qui sera dans 15 ans la langue officielle ;p

Non sérieusement, non seulement il est conseillé de trouver du code et des tutos en anglais, mais en plus il faut mettre ses noms de méthodes en anglais voire même (plus pénible) tout mettre en anglais (variables, commentaires ...)

Parce que à part faire du Windev ou du 4D (berk), tu trouveras aucun langague en français

Voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Messages postés
1
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
19 novembre 2006

il suffit de faire un transtipage, pour avoir un nombre entier entre 0 et 100 :

    int nombre = (int) (Math.random() * 101) ;