Générateur de nombres aléatoires. Générateurs de nombres aléatoires : comment choisir le bon service

Merci d'aider le service en un clic : Parlez du générateur à vos amis !

Générateur de numéros en ligne en 1 clic

Le générateur de nombres aléatoires, qui est présenté sur notre site Web, est très pratique. Par exemple, il peut être utilisé dans les tirages au sort et les loteries pour déterminer le gagnant. Les gagnants sont déterminés de cette manière : le programme donne un ou plusieurs numéros dans n'importe quelle plage que vous spécifiez. La manipulation des résultats peut être immédiatement éliminée. Et grâce à cela, le gagnant est déterminé dans un choix équitable.

Parfois, vous devez obtenir un certain nombre de nombres aléatoires à la fois. Par exemple, vous voulez remplir un ticket de loterie « 4 sur 35 » en vous fiant au hasard. Vous pouvez vérifier : si vous lancez une pièce 32 fois, quelle est la probabilité que 10 revers tombent d'affilée (le pile/face peut très bien être attribué par les chiffres 0 et 1) ?

Instruction vidéo en ligne sur les nombres aléatoires - randomiseur

Notre générateur de nombres est très facile à utiliser. Il ne nécessite pas de télécharger un programme sur un ordinateur - il peut être utilisé en ligne. Pour obtenir le nombre dont vous avez besoin, vous devez définir la plage de nombres aléatoires, le nombre et, si vous le souhaitez, le séparateur de nombres et exclure les répétitions.

Pour générer des nombres aléatoires dans une plage de fréquences spécifique :

  • Choisissez une gamme ;
  • Spécifiez le nombre de nombres aléatoires ;
  • La fonction "Séparateur de nombres" sert à la beauté et à la commodité de leur affichage ;
  • Si nécessaire, activez / désactivez les répétitions avec une coche ;
  • Cliquez sur le bouton "Générer".

En conséquence, vous recevrez des nombres aléatoires dans une plage donnée. Le résultat du générateur de nombres peut être copié ou envoyé par e-mail. Il serait préférable de prendre une capture d'écran ou une vidéo de ce processus de génération. Notre randomiseur résoudra toutes vos tâches !

Nous avons une suite de nombres, composée d'éléments presque indépendants qui obéissent à une distribution donnée. Habituellement uniformément réparti.

Vous pouvez générer des nombres aléatoires dans Excel de différentes manières. Jetons un coup d'œil aux meilleurs d'entre eux.

Fonction de nombre aléatoire dans Excel

  1. La fonction RAND renvoie un nombre réel aléatoire uniformément distribué. Il sera inférieur à 1, supérieur ou égal à 0.
  2. La fonction RANDBETWEEN renvoie un entier aléatoire.

Regardons leur utilisation avec des exemples.

Sélection de nombres aléatoires avec RAND

Cette fonction ne nécessite aucun argument (RAND()).

Pour générer un nombre réel aléatoire entre 1 et 5, par exemple, utilisez la formule suivante : =RAND()*(5-1)+1.

Le nombre aléatoire renvoyé est réparti uniformément sur l'intervalle.

Chaque fois que la feuille de calcul est calculée ou que la valeur d'une cellule de la feuille de calcul change, un nouveau nombre aléatoire est renvoyé. Si vous souhaitez enregistrer la population générée, vous pouvez remplacer la formule par sa valeur.

  1. Nous cliquons sur une cellule avec un nombre aléatoire.
  2. Mettez la formule en surbrillance dans la barre de formule.
  3. Appuyez sur F9. ET ENTREZ.

Vérifions l'uniformité de la distribution des nombres aléatoires du premier échantillon à l'aide de l'histogramme de distribution.


La plage de valeurs verticales est la fréquence. Horizontale - "poches".



Fonction RANDBETWEEN

La syntaxe de la fonction RANDBETWEEN est (borne inférieure ; borne supérieure). Le premier argument doit être inférieur au second. Sinon, la fonction renverra une erreur. Les bornes sont supposées être des nombres entiers. La formule ignore la partie fractionnaire.

Un exemple d'utilisation de la fonction :

Nombres aléatoires avec une précision de 0,1 et 0,01 :

Comment créer un générateur de nombres aléatoires dans Excel

Faisons un générateur de nombres aléatoires avec la génération d'une valeur à partir d'une certaine plage. Nous utilisons une formule du type : =INDEX(A1:A10;INTEGER(RAND()*10)+1).

Créons un générateur de nombres aléatoires dans la plage de 0 à 100 avec un pas de 10.

Dans la liste des valeurs de texte, vous devez en sélectionner 2 au hasard. À l'aide de la fonction RAND, nous comparons les valeurs de texte dans la plage A1: A7 avec des nombres aléatoires.

Utilisons la fonction INDEX pour sélectionner deux valeurs de texte aléatoires dans la liste d'origine.

Pour sélectionner une valeur aléatoire dans la liste, appliquez la formule suivante : =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

Générateur de nombres aléatoires à distribution normale

Les fonctions RAND et RANDBETWEEN produisent des nombres aléatoires avec une seule distribution. Toute valeur avec la même probabilité peut tomber dans la limite inférieure de la plage demandée et dans la limite supérieure. Il s'avère un écart énorme par rapport à la valeur cible.

La distribution normale signifie que la plupart des nombres générés sont proches de la cible. Corrigeons la formule RANDBETWEEN et créons un tableau de données avec une distribution normale.

Le coût des marchandises X est de 100 roubles. L'ensemble du lot produit fait l'objet d'une répartition normale. La variable aléatoire suit également une distribution de probabilité normale.

Dans de telles conditions, la valeur moyenne de la gamme est de 100 roubles. Générons un tableau et construisons un graphique avec une distribution normale avec un écart type de 1,5 roubles.

Nous utilisons la fonction : =NORMINV(RAND();100;1.5).

Excel a calculé quelles valeurs se situent dans la plage des probabilités. Étant donné que la probabilité de produire un produit d'un coût de 100 roubles est maximale, la formule affiche des valeurs proches de 100 plus souvent que les autres.

Passons au tracé. Vous devez d'abord créer un tableau avec des catégories. Pour ce faire, nous divisons le tableau en périodes :

Sur la base des données obtenues, nous pouvons former un diagramme avec une distribution normale. L'axe des valeurs est le nombre de variables dans l'intervalle, l'axe des catégories est les périodes.

Etc., et est utilisé par les propriétaires de compte pour attirer de nouveaux publics dans la communauté.

Le résultat de ces tirages dépend souvent de la chance de l'utilisateur, puisque le destinataire du prix est déterminé au hasard.

Pour une telle détermination, les organisateurs de tirages utilisent presque toujours un générateur de nombres aléatoires en ligne ou préinstallé et distribué gratuitement.

Choix

Assez souvent, il peut être difficile de choisir un tel générateur, car leur fonctionnalité est assez différente - pour certains, elle est considérablement limitée, pour d'autres, elle est assez large.

Un assez grand nombre de ces services sont mis en place, mais la difficulté est qu'ils diffèrent par leur portée.

Beaucoup, par exemple, sont liés avec leurs fonctionnalités à un réseau social spécifique (par exemple, de nombreuses applications génératrices ne fonctionnent qu'avec des liens de celui-ci).

Les générateurs les plus simples génèrent simplement un nombre aléatoire dans une plage donnée.

Ceci est pratique car il n'associe pas le résultat à une publication spécifique, ce qui signifie qu'ils peuvent être utilisés pour des tirages en dehors du réseau social et dans diverses autres situations.

Ils n'ont pas vraiment d'autre usage.

Conseil! Lors du choix du générateur le plus approprié, il est important de prendre en compte le but pour lequel il sera utilisé.

Caractéristiques

Pour le processus le plus rapide de choix du service optimal de génération de nombres aléatoires en ligne, le tableau ci-dessous présente les principales caractéristiques techniques et fonctionnalités de ces applications.

Tableau 1. Caractéristiques du fonctionnement des applications en ligne pour générer un nombre aléatoire
Nom Réseau social Plusieurs résultats Sélectionnez parmi une liste de numéros Widget en ligne pour site Web Sélectionnez parmi une gamme Désactiver les répétitions
trucs de rando Oui Oui Pas Oui Pas
Tirer au sort Site officiel ou VKontakte Pas Pas Oui Oui Oui
Nombre aléatoire Site officiel Pas Pas Pas Oui Oui
Aléatoire Site officiel Oui Pas Pas Oui Pas
nombres aléatoires Site officiel Oui Pas Pas Pas Pas

Toutes les applications décrites dans le tableau sont décrites plus en détail ci-dessous.

trucs de rando

Vous pouvez utiliser cette application en ligne en utilisant le lien vers son site officiel http://randstuff.ru/number/.

Ceci est un simple générateur de nombres aléatoires, caractérisé par un fonctionnement rapide et stable.

Il est mis en œuvre avec succès à la fois sous le format d'une application indépendante distincte sur le site officiel et sous la forme d'une application au format .

La particularité de ce service est qu'il peut choisir un numéro aléatoire à la fois dans la plage spécifiée et dans une liste spécifique de numéros pouvant être spécifiés sur le site.

  • Travail stable et rapide;
  • Absence de lien direct avec le réseau social ;
  • Vous pouvez sélectionner un ou plusieurs numéros ;
  • Vous ne pouvez choisir que parmi les numéros donnés.

Les avis des utilisateurs sur cette application sont les suivants : « Nous déterminons les gagnants dans les groupes VKontakte via ce service. Merci", "Vous êtes le meilleur", "Je n'utilise que ce service".

Tirer au sort

Cette application est un simple générateur de fonctions, implémenté sur le site officiel, sous la forme d'une application VKontakte.

Il existe également un widget générateur à intégrer sur votre site.

La principale différence avec l'application décrite précédemment est que cela vous permet de désactiver la répétition du résultat.

Le générateur de nombres aléatoires en ligne présenté fonctionne sur la base d'un générateur de nombres pseudo-aléatoires logiciel intégré à JavaScript avec une distribution uniforme. Des entiers sont générés. Par défaut, 10 nombres aléatoires sont affichés dans la plage 100...999, les nombres sont séparés par des espaces.

Paramètres de base du générateur de nombres aléatoires :

  • Quantité de numéros
  • Plage de numéros
  • Type de séparateur
  • Activer/désactiver la fonction de suppression des répétitions (doubles de nombres)

Le nombre total est formellement limité à 1000, le nombre maximum est de 1 milliard. Options de séparation : espace, virgule, point-virgule.

Vous savez maintenant exactement où et comment obtenir une séquence gratuite de nombres aléatoires dans une plage donnée sur Internet.

Cas d'utilisation du générateur de nombres aléatoires

Le générateur de nombres aléatoires (RNG sur JS avec distribution uniforme) sera utile aux spécialistes SMM et aux propriétaires de groupes et de communautés sur les réseaux sociaux Instagram, Facebook, Vkontakte, Odnoklassniki pour déterminer les gagnants des loteries, concours et tirages au sort.

Le générateur de nombres aléatoires vous permet de tirer des prix parmi un nombre arbitraire de participants avec un nombre donné de gagnants. Les concours peuvent être organisés sans reposts ni commentaires - vous définissez vous-même le nombre de participants et l'intervalle de génération de nombres aléatoires. Vous pouvez obtenir un ensemble de nombres aléatoires en ligne et gratuitement sur ce site, et vous n'avez pas besoin d'installer d'application sur votre smartphone ou de programme sur votre ordinateur.

En outre, un générateur de nombres aléatoires en ligne peut être utilisé pour simuler le lancer d'une pièce ou d'un dé. Mais en passant, nous avons des services spécialisés distincts pour ces cas.

  • Didacticiel

Vous êtes-vous déjà demandé comment fonctionne Math.random() ? Qu'est-ce qu'un nombre aléatoire et comment est-il obtenu ? Et imaginez une question lors d'un entretien - écrivez votre générateur de nombres aléatoires en quelques lignes de code. Et donc, qu'est-ce que c'est, un accident et est-il possible de le prévoir ?

Je suis très fasciné par divers puzzles et puzzles informatiques, et le générateur de nombres aléatoires est l'un de ces puzzles. Habituellement, dans ma chaîne de télégrammes, je trie toutes sortes d'énigmes et diverses tâches à partir d'entretiens. Le problème du générateur de nombres aléatoires a acquis une grande popularité et j'ai voulu le perpétuer dans les profondeurs de l'une des sources d'information faisant autorité - c'est-à-dire ici sur Habré.

Ce matériel sera utile à tous les développeurs front-end et Node.js qui sont à la pointe de la technologie et qui souhaitent se lancer dans le projet / startup blockchain, où des questions sur la sécurité et la cryptographie, au moins à un niveau de base, sont posées même par les développeurs front-end.

Générateur de nombres pseudo-aléatoires et générateur de nombres aléatoires

Afin d'obtenir quelque chose d'aléatoire, nous avons besoin d'une source d'entropie, une source d'une sorte de chaos à partir de laquelle nous allons utiliser pour générer de l'aléatoire.

Cette source sert à accumuler de l'entropie puis à en tirer la valeur initiale (initial value, seed), nécessaire aux générateurs de nombres aléatoires (RNG) pour générer des nombres aléatoires.

Le générateur de nombres pseudo-aléatoires utilise une valeur de départ unique, d'où son caractère pseudo-aléatoire, tandis que le générateur de nombres aléatoires génère toujours un nombre aléatoire, en commençant par une valeur aléatoire de haute qualité provenant de diverses sources d'entropie.

L'entropie - est une mesure du désordre. L'entropie de l'information est une mesure de l'incertitude ou de l'imprévisibilité de l'information.
Il s'avère que pour créer une séquence pseudo-aléatoire, nous avons besoin d'un algorithme qui générera une séquence basée sur une certaine formule. Mais une telle séquence peut être prédite. Cependant, imaginons comment nous pourrions écrire notre propre générateur de nombres aléatoires si nous n'avions pas Math.random()

PRNG a un algorithme qui peut être reproduit.
RNG - obtient complètement des nombres à partir de n'importe quel bruit, la capacité de calculer ce qui tend vers zéro. Dans le même temps, le RNG dispose de certains algorithmes pour niveler la distribution.

Inventer notre propre algorithme PRNG

Le générateur de nombres pseudo-aléatoires (PRNG) est un algorithme qui génère une suite de nombres dont les éléments sont quasiment indépendants les uns des autres et obéissent à une distribution donnée (généralement uniforme).
Nous pouvons prendre une séquence de certains nombres et en tirer le module du nombre. L'exemple le plus simple qui me vient à l'esprit. Nous devons réfléchir à la séquence à prendre et au module à partir de quoi. Si juste directement de 0 à N et module 2, alors vous obtenez un générateur de 1 et 0 :

Function* rand() ( const n = 100; const mod = 2; let i = 0; while (true) ( ​​​​yield i % mod; if (i++ > n) i = 0; ) ) let i = 0; for (let x of rand()) ( if (i++ > 100) break; console.log(x); )
Cette fonction génère pour nous la séquence 01010101010101 ... et elle ne peut même pas être qualifiée de pseudo-aléatoire. Pour qu'un générateur soit aléatoire, il doit réussir le test du bit suivant. Mais nous n'avons pas une telle tâche. Néanmoins, même sans aucun test, on peut prédire la prochaine séquence, ce qui veut dire qu'un tel algorithme n'est pas adapté au front, mais on est dans la bonne direction.

Mais que se passe-t-il si nous prenons une séquence bien connue, mais non linéaire, par exemple, le nombre PI. Et comme valeur pour le module, nous ne prendrons pas 2, mais autre chose. Vous pouvez même penser à la valeur changeante du module. La séquence de chiffres dans Pi est considérée comme aléatoire. Le générateur peut fonctionner en utilisant pi à partir d'un point inconnu. Un exemple d'un tel algorithme, avec une séquence basée sur PI et un changement de modulo :

Vecteur const = [...Math.PI.toFixed(48).replace(".","")] ; fonction* rand() ( pour (soit i=3; i<1000; i++) { if (i >99) je = 2 ; pour (soit n=0 ; n Mais en JS, le nombre PI ne peut être affiché que jusqu'à 48 caractères et pas plus. Par conséquent, il est toujours facile de prédire une telle séquence, et chaque exécution d'un tel générateur produira toujours les mêmes nombres. Mais notre générateur a déjà commencé à afficher des nombres de 0 à 9.

Nous avons un générateur de nombres de 0 à 9, mais la distribution est très inégale et il générera la même séquence à chaque fois.

On peut prendre non pas le nombre Pi, mais le temps en représentation numérique et considérer ce nombre comme une suite de chiffres, et afin d'éviter que la suite ne se répète à chaque fois, on le lira à partir de la fin. Au total, notre algorithme pour notre PRNG ressemblera à ceci :

Function* rand() ( let newNumVector = () => [...(+new Date)+""].reverse(); let vector = newNumVector(); let i=2; while (true) ( ​​​​si ( i++ > 99) i = 2 ; soit n=-1 ; tandis que (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) pause ; console.log(x) )
Maintenant, cela ressemble à un générateur de nombres pseudo-aléatoires. Et le même Math.random() - est un PRNG, nous en reparlerons un peu plus tard. De plus, à chaque fois le premier nombre est différent.

En fait, sur ces exemples simples, vous pouvez comprendre comment fonctionnent les générateurs de nombres aléatoires plus complexes. Et il existe même des algorithmes prêts à l'emploi. Par exemple, analysons l'un d'entre eux - c'est le PRNG congruent linéaire (LCPRNG).

PRNG linéaire congruent

Le PRNG linéaire congruentiel (LCPRNG) -  est une méthode courante pour générer des nombres pseudo-aléatoires. Il n'a pas de force cryptographique. Cette méthode consiste à calculer les termes d'une suite récurrente linéaire modulo un nombre naturel m donné par une formule. La séquence résultante dépend du choix du numéro de départ - c'est-à-dire planter. Pour différentes valeurs de départ, différentes séquences de nombres aléatoires sont obtenues. Un exemple d'implémentation d'un tel algorithme en JavaScript :

Const a = 45 ; const c = 21 ; const m = 67 ; varech = 2 ; const rand = () => graine = (a * graine + c) % m; pour(soit i=0; je<30; i++) console.log(rand())
De nombreux langages de programmation utilisent LCPRNG (mais pas seulement un tel algorithme (!).

Comme mentionné ci-dessus, une telle séquence peut être prédite. Alors pourquoi avons-nous besoin de PRNG ? Si nous parlons de sécurité, alors PRNG est un problème. Si nous parlons d'autres tâches, ces propriétés  -  peuvent jouer un plus. Par exemple, pour divers effets spéciaux et animations graphiques, vous devrez peut-être appeler random fréquemment. Et ici la répartition des valeurs et la performance sont importantes ! Les algorithmes de sécurité ne peuvent pas se vanter d'être rapides.

Une autre propriété - reproductibilité. Certaines implémentations vous permettent de spécifier une graine, ce qui est très utile si une séquence doit être répétée. La reproduction est nécessaire dans les tests, par exemple. Et il y a beaucoup d'autres choses qui ne nécessitent pas de RNG sécurisé.

Comment fonctionne Math.random()

La méthode Math.random() renvoie un nombre à virgule flottante pseudo-aléatoire de la plage = crypto.getRandomValues(new Uint8Array(1)); journal de la console (rvalue)
Mais, contrairement à PRNG Math.random(), cette méthode est très gourmande en ressources. Le fait est que ce générateur utilise des appels système dans l'OS pour accéder aux sources d'entropie (adresse coquelicot, cpu, température, etc...).