Le titre le résume. Je suis intéressé de savoir s'il existe un algorithme capable de produire une sortie variable avec une entrée identique sans s'appuyer sur d'autres sources pour l'aléatoire comme DateTime.Now ou un nombre généré à partir d'un capteur de lumière, etc. En outre, l'algorithme ne peut pas être exécuté en séquence, seulement deux exécutions distinctes et indépendantes qui produisent une sortie différente.
10
2.0 + 2.0
sur un tel système ne donnerait pas des résultats identiques. Il n'a pas besoin d'une autre source de hasard.Réponses:
Non, c'est fondamentalement impossible, car la définition même d'un algorithme est qu'il est bien défini et déterministe, c'est-à-dire que la même entrée produira toujours la même sortie. Il existe des algorithmes randomisés, mais ils nécessitent un caractère aléatoire en entrée.
En outre, le déterminisme est l' objectif de conception le plus important du matériel informatique. Un processeur qui ne produit pas la même sortie avec la même entrée serait totalement inutile pour la plupart des applications.
la source
Non, un algorithme de génération de nombres pseudo-aléatoires produira toujours la même sortie étant donné la même graine (donc pseudo- aléatoire).
Je trouve intéressant que vous utilisiez le terme «algorithme» plutôt que «programme». Cela exclut une certaine classe de réponses oui (erreurs logicielles dans la RAM, différents entrelacements de threads dans un RNG multithread, etc.). Si vous considérez comme acquis que chaque exécution de votre algorithme prend la même entrée à chaque itération est bien spécifiée sans aléatoire, alors il générera la même sortie à chaque exécution.
Cela étant dit, même des éléments de base comme la température du processeur sont suffisamment imprévisibles pour agir comme une source d'entropie s'ils sont normalisés de manière appropriée. Donc, ne pensez pas que cela implique qu'un générateur de nombres aléatoires "cryptographiquement sécurisé" peut être prédit si vous savez à quelle heure il a été exécuté; beaucoup d'entre eux utilisent un flux d'entropie généré par le système.
la source
Saviez-vous que les gens travaillent très dur pour s'assurer que, à partir de la même graine, la même séquence de nombres aléatoires soit produite à chaque fois? C'est une propriété souhaitable pour des choses comme la simulation de Monte Carlo, car cela signifie que les résultats sont entièrement reproductibles. Si vous ne spécifiez pas la graine, quelque chose comme l'heure sera utilisée, mais cette reproductibilité exacte est vraiment souhaitée.
Les seuls RNG où cela n'est vraiment pas souhaité sont ceux utilisés pour la cryptographie, et ceux qui y parviennent généralement en utilisant la propre source de nombres aléatoires du système d'exploitation (qui n'est pas rembobinable dans des circonstances normales et qui peut utiliser du matériel de fantaisie) pour fournir leur graine.
la source
Je suppose que si vous avez implémenté l'algorithme sur différentes plates-formes matérielles et qu'il a utilisé des techniques telles que la prise des N bits du milieu d'un entier, vous pourriez éventuellement obtenir des réponses différentes si l'encodage entier était différent (gros / petit / milieu de gamme). Vous pouvez également rencontrer des problèmes s'exécutant sur des machines dotées de FPU par rapport à celles qui ne le font pas si vous manipulez des nombres à virgule flottante. Probablement pas un problème sur les ordinateurs de bureau, mais pourrait être un problème sur les téléphones.
la source