Donc, j'ai un problème. Fondamentalement, je n'ai pas assez prêté attention aux maths de lycée, et maintenant je suis bloqué. J'ai besoin de générer des nombres aléatoires entre 1 et 20 avec un fort accent sur celui entre 1 et 5, un accent léger sur 5-10, et un accent faible sur 10-20. Je ne comprends pas tous les mots de probabilité fantaisie et tout ce qu'ils disent dans les articles que j'ai rencontrés. Toute aide que vous pourriez fournir serait appréciée. Merci!Numéros aléatoires probabilistes?
Répondre
Vous pouvez utiliser cette formule pour générer un nombre aléatoire dans l'intervalle [bas, haut]:
var randomNumber:int = Math.floor(Math.random()*(1+high-low))+low;
Vous pouvez le mettre dans une fonction si vous voulez.
Maintenant, un moyen facile d'avoir une probabilité différente pour les trois intervalles que vous avez fournis, est de faire quelque chose comme ceci:
var random:Number = Math.random();
if (random < 0.75) {
// generate random number in [1, 5]
} else if (random < 0.95) {
// generate random number in [6, 10]
} else {
// generate random number in [11, 20]
}
Cela fonctionne parfaitement, merci! – Jack
Vous pouvez également utiliser quelque chose le long des lignes ci-dessous si vous avez besoin d'un « lisse " Distribution. C'est à dire. la distribution varierait graduellement entre les valeurs les plus basses et les plus élevées, l'accent devant être mis sur les valeurs les plus basses dans le cas ci-dessous.
private function univenlyDistributedRandom(low:int, high:int):Number
{
return low + (1 - Math.pow(Math.random(), 4)) * (high - low);
}
Vous pouvez, bien sûr, utiliser toute autre fonction (hyperbole, ou etc sinus) pour générer des variations légèrement différentes. Une chose amusante cependant. Si vous utilisez un moteur de tweening, vous avez probablement déjà ce genre de fonctions! Toute fonction d'accélération qui n'est pas linéaire et appliquée à la sortie du Math.random()
affecterait la distribution de façon "lisse". Donc, si, par exemple, vous voyez que la fonction d'accélération fait quelque chose comme "ça va lent au début, mais plus vite, plus vite, et encore plus vite", cela voudrait dire que la distribution que vous pourriez obtenir serait biaisée les plus petits nombres et les plus grands nombres se produiraient moins souvent.
J'utiliserais l'une des équations de penner. http://www.robertpenner.com/easing/
Générer un nombre compris entre 0 et 1. Donne à l'équation de Penner, il renvoie un nombre compris entre 0 et 1. Multipliez ce nombre par la valeur maximale que vous voulez. Arrondissez-le.
number = Math.round(MyTransformFunction(Math.random())*MaxNumber)
function MyTransformFunction(x){
return x*x;
}
Toutes les autres fonctions qui renvoient un nombre compris entre 0-1 pour une entrée entre 0-1 fonctionnera:
return -x*x;
return Math.sqrt(x);
- 1. Numéros aléatoires Python
- 2. Numéros aléatoires dans C#
- 3. Numéros aléatoires dans flex
- 4. Numéros aléatoires non répétitifs
- 5. Numéros aléatoires uniques
- 6. Numéros aléatoires et négatifs
- 7. Numéros aléatoires utilisant C#
- 8. Numéros aléatoires dans le tableau
- 9. Numéros aléatoires int64 et float64
- 10. Numéros aléatoires uniques en PHP
- 11. Numéros aléatoires avec le taux
- 12. Fonctions probabilistes de test
- 13. Ces numéros aléatoires sont-ils 'sûrs'
- 14. Numéros aléatoires dans POSIX C API
- 15. Numéros aléatoires et fonction sol/tour
- 16. Numéros aléatoires avec rand() et une graine
- 17. Numéros aléatoires SQL Server utilisant CTE
- 18. Numéros aléatoires de chiffrement dans Access 2010
- 19. Numéros aléatoires de la distribution bêta, C++
- 20. Numéros aléatoires dans différents langages de programmation
- 21. Numéros aléatoires et stockage local thread
- 22. Numéros aléatoires en Java lorsque vous travaillez avec Android
- 23. Numéros aléatoires (le nombre 2 ou 4) en Java
- 24. Générer des numéros aléatoires sans doublons dans l'iPhone?
- 25. Numéros aléatoires lognormaux dans la plage spécifique dans Matlab
- 26. générateur de nombres aléatoires C de sans numéros répéter
- 27. Pouvez-vous ajouter des numéros aléatoires d'importation ensemble?
- 28. Mélangez les numéros aléatoires. dans une zone de liste déroulante
- 29. echo numéros aléatoires de la base de données mysql sans répéter les numéros?
- 30. Comment dessiner des distributions probabilistes avec numpy/matplotlib?
il y a eu plusieurs questions à ce sujet sur le SO .... En fait –
, Je programme depuis 5 ou 6 ans maintenant, et j'ai juste une question mathématique simple. À moins que vous n'ayez quelque chose d'utile à ajouter, les commentaires ne sont pas appréciés. – Jack
@Jack Étant agressif n'est probablement pas le meilleur moyen d'obtenir la réponse que j'étais à mi-chemin pour vous .. – Marty