La division d'un nombre au hasard parties inégales
Donc je suis en train de faire un script qui va au hasard diviser une valeur de 4 à 12 différentes variables. Je ne peux pas penser à une bonne façon de le faire correctement. J'ai pensé à la randomisation des numéros de sorte qu'ils sont près à 0,33 (1/12 de 4), mais qui conduisent souvent à la dernière quelques numéros underprioritized. Quelqu'un a essayé quelque chose comme ça avant, ou avez des idées pour la façon de faire ce que aléatoire et uniforme inégale possible?
OriginalL'auteur Tom | 2013-02-19
Vous devez vous connecter pour publier un commentaire.
Générer des 12 nombres aléatoires à partir de votre favori générateur de nombre aléatoire, appeler
r1..r12
.Ajoutez tous, appel la somme
sum
.Votre première aléatoire fraction de
4
est(r1/sum)*4
. Le reste devrait être évident.Notez que cette solution ne permet pas de générer des ensembles de nombres qui sont distribués uniformément dans la logique, mais c'EST la solution que la plupart des gens semblent choisir parce qu'ils ne comprennent pas pourquoi il ne parvient pas à produire quelque chose de vraiment uniforme.
il aurait été utile de fournir quelques justification de cette critique (même si c'est correct), et même plus utile de donner une réponse qui ne générer uniformément répartie partitions. J'ai essayé de faire le dernier, même si je ne suis pas sûr que c'est correct.
Je POURRAIS le faire, mais il faudrait une réponse longue, pas quelque chose qui tiendrait dans un commentaire. Et de toute façon, je l'ai DÉJÀ fait dans l'EXTRÊME détail. Vraiment, cette question devrait sans doute être fermé comme un doublon. stackoverflow.com/questions/8064629/...
merci, ce lien est utile. Théoriquement, cette question diffère de celle liée à la question parce que cette question est plus d'un domaine en continu, alors que la question liée est discret. Bien sûr, dans la pratique, les deux d'entre eux sont discrètes, mais la réponse dépendra de la solution continue est suffisamment bonne approximation.
OriginalL'auteur High Performance Mark
Générer un nombre aléatoire supérieur à 1 et après redimensionner à somme requise.
Exemple:
Normalisée à 1 (1*4) /78
2 normalisée à (2*4) /78
...
12 normalisée à (12*4) /78
OriginalL'auteur Толя
L'algorithme suivant fournit uniformément distribué des partitions, en supposant qu'il est possible de générer de l'aléatoire uniformément distribué des numéros sur une gamme continue (ou, au moins, sur un intervalle discret avec un nombre suffisant de valeurs possibles que les chances de duplication sont négligeables).
Pour produire une partition de
t
enk
valeurs:Générer
k-1
uniformément distribué des valeurs dans la plage[0, t]
.De les trier, et ajouter
0
au début et à lat
à la fin.Utilisation de la côté des différences de la partition.
OriginalL'auteur rici