[LINUX] [Langage C] Je souhaite générer des nombres aléatoires dans la plage spécifiée

introduction

Vous souhaiterez peut-être remplir un certain tableau avec une valeur appropriée. Ou vous pouvez créer une valeur aléatoire pour vos données de test. Voici quelques conseils que vous pouvez utiliser dans de tels cas.

C'est un peu gênant si rand () / rand_r () est laissé tel quel

Rand () / rand_r () est fourni comme une fonction pour générer des nombres aléatoires.

#include <stdlib.h>

int rand(void);
int rand_r(unsigned int *seedp);

Cependant, la fonction ci-dessus utilise des nombres aléatoires entre 0 et RAND_MAX ** (* 1) **, donc si vous souhaitez générer des nombres aléatoires de 0 à UCHAR_MAX (255), vous ne pouvez pas l'utiliser tel quel. ..

** (* 1) ** Dans mon environnement, il a été défini dans stdlib.h comme suit

/* The largest number rand will return (same as INT_MAX).  */
#define	RAND_MAX	2147483647

Solution

Si vous préparez la fonction wrapper suivante, vous pouvez spécifier la plage de valeurs minimum / maximum (0 à RAND_MAX).

#include <stdlib.h>

int getrand(unsigned int* seed, int min, int max)
{
    return min + (int)(rand_r(seed) * (max - min + 1.0) / (1.0 + RAND_MAX));
}

DEMO

Voici un exemple de programme simple. Veuillez l'utiliser pour vérifier le fonctionnement.

https://github.com/ydah/specified_range_rand_r

Recommended Posts

[Langage C] Je souhaite générer des nombres aléatoires dans la plage spécifiée
J'ai essayé d'illustrer le temps et le temps du langage C
Je veux afficher la progression en Python!
Même avec JavaScript, je veux voir Python `range ()`!
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux utiliser le jeu de données R avec python
Je souhaite extraire uniquement les pods avec l'étiquette spécifiée à l'aide du sélecteur d'étiquettes dans Client-go
Je veux rendre le type de dictionnaire dans la liste unique
[Introduction à Pytorch] Je souhaite générer des phrases dans des articles de presse
Je veux aligner les nombres valides dans le tableau Numpy
Je ne voulais pas écrire la clé AWS dans le programme
[Linux] Je souhaite connaître la date à laquelle l'utilisateur s'est connecté
Développement LINEbot, je souhaite vérifier le fonctionnement dans l'environnement local
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Je veux réussir le test G dans un mois Jour 1
Je veux connaître la population de chaque pays du monde.
Je veux épingler Spyder à la barre des tâches
Je veux sortir froidement sur la console
Je veux imprimer dans la notation d'inclusion
Je veux gérer la rime part1
Je veux gérer la rime part3
Tri sélect écrit en C
Je veux afficher la barre de progression
Générer un langage C à partir d'une expression S avec Python
Je veux intégrer Matplotlib dans PySimpleGUI
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
Je souhaite trier une liste dans l'ordre des autres listes
Je souhaite utiliser Django Debug Toolbar dans les applications Ajax
Je souhaite laisser une commande arbitraire dans l'historique des commandes de Shell
Je veux visualiser où et combien de personnes se trouvent dans l'usine
Comment utiliser la bibliothèque C en Python
Je veux faire le test de Dunnett en Python
Comment générer une séquence en Python et C ++
Je veux corriger Datetime.now dans le test de Django
[Django memo] Je souhaite définir à l'avance les informations de l'utilisateur connecté dans le formulaire.
Méthode de contrôle exclusive multi-processus en langage C
Je veux gérer la rime part7 (BOW)
Je souhaite stocker les informations de la base de données dans la liste
Je veux utiliser PyTorch pour générer quelque chose comme les paroles de Japari Park
Je veux fusionner des dictionnaires imbriqués en Python
Je souhaite définir un cycle de vie dans la définition de tâche d'ECS
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
J'ai fait un module en langage C qui filtre les images chargées par Python
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
J'ai essayé de générer une chaîne de caractères aléatoire
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Je veux créer du code C ++ à partir de code Python!
Comment compter les nombres dans une plage spécifique
Je souhaite personnaliser l'apparence de zabbix
Je souhaite utiliser la fonction d'activation Mish
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Je veux juste trouver l'intervalle de confiance à 95% de la différence de ratio de population en Python
Je veux remplacer les variables dans le fichier de modèle python et le produire en masse dans un autre fichier
Comment limiter la publication de l'API dans la bibliothèque partagée en langage C de Linux