IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Faire un random sur une heure


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Faire un random sur une heure
    Bonjour,

    Je souhaite simuler des heures aléatoires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			long minHour = LocalTime.of(00, 00).toSecondOfDay();
    			long maxHour = LocalTime.of(23, 55).toSecondOfDay();
    			long randomHour = ThreadLocalRandom.current().nextLong(minHour, maxHour);
    			LocalTime hour = LocalTime.ofSecondOfDay(randomHour).truncatedTo(ChronoUnit.MINUTES);
    Sauf que je voudrais que les minutes se termine par 0 ou 5

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        public static void main(String[] args) {
            Random fonctionAleatoire = new Random();
            int heureAleatoire = fonctionAleatoire.nextInt(24);// Renverra un entier aléatoire compris entre 0 et 23 inclu.
            int minutes = fonctionAleatoire.nextInt(60);// Renverra un entier aléatoire compris entre 0 et 59 inclu.
            int secondes = definitPrecision(fonctionAleatoire.nextInt(60));
            LocalTime test = LocalTime.of(heureAleatoire, minutes, secondes);
            System.out.println(test);
            }
     
        private static int definitPrecision(int nextInt) {
            if (nextInt <=5) return 0;
            else {
                while (nextInt%5 != 0) nextInt++;
                if (nextInt == 60) nextInt = 59;
                return nextInt;
                }
            }
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Par contre, je souhaite que les minutes se termine par 0 ou 5 seulement
    Par exemple, je veux générer une heure entre 9h00 et 10h30

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    tu fais un nextInt(12) et tu fais * 5

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Par exemple, je veux générer une heure entre 9h00 et 10h30

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Dans un jour, il y a 24 * 60 = 1440 minutes. Si tu voulais des heures à la minute pres, il suffirait de choisir un chiffre entre 0 et (1440 - 1). Mais comme tu veux une heure à 5 minutes pres, tu as 1440 / 5 = 288 possibilités. Il te suffit donc de choisir un chiffre entre 0 et 287.
    A partir du chiffre, pour connaitre l'heure : heures = chiffre / 12 (tronqué) et minutes = (chiffre % 12) * 5.
    A partir de l'heure, pour trouver le chiffre : chiffre = heures * 12 + (minutes / 5)

    Et voila

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    As-tu un exemple en java car j'ai pas vraiment compris

  8. #8
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    dans une heure, t'as 60 minutes, si tu divises par 5 ça te fait 12, tu fais donc un random (12) qui te donne toutes les possibilités, puis tu fais * 5 pour les matérialiser sur une vraie heure

    exemple si tu random = 3 -> 3*5 ca fait 15, donc ça te fait heure / 15 minutes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un undo sur une macro
    Par cbonnard dans le forum Général VBA
    Réponses: 15
    Dernier message: 19/10/2005, 17h19
  2. Faire un select sur une quantité défini d'élément
    Par tripper.dim dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2005, 11h14
  3. Faire un Lock sur une table pendant l'exec d'un DTS
    Par Pete dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/03/2005, 14h17
  4. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  5. Commande date. Faire des opération sur l'heure?
    Par fidififouille dans le forum Linux
    Réponses: 9
    Dernier message: 23/08/2004, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo