4
votes

Sélectionnez un nombre aléatoire dans une liste spécifique

Comment obtenir un nombre aléatoire [10, 20, 30, 50] dans MySQL.

J'ai essayé d'utiliser ROUND (RAND () * (50 - 10) + 10) mais cela générera des nombres tels que 11, 12, 24 que je ne veux pas.

Je me demande si ce code va:

FLOOR((RAND([5,10,15,20,25,30,35,40]))

mais comment?

Je veux définir ma colonne de quantité pour choisir au hasard 10 , 20, 30 ou 50. pas 11, 12 ou autre nombre possible en utilisant ROUND (RAND () * (50-10) + 10).

J'espère que c'est clair.


2 commentaires

Si vous connaissez les nombres que vous souhaitez générer, alors ils ne sont pas vraiment aléatoires, non? Peut-être pourriez-vous mieux expliquer ce que vous essayez de faire ici?


utilisez une boucle et non une fonction rand ().


3 Réponses :


3
votes

essayez ceci, cela fonctionne bien

ROUND(RAND() * (5-1))*10


3 commentaires

ça marche comme du charme! merci .. je modifie en ROUND (RAND () * (5-1) + 1) * 10 pour empêcher 0 sortie


Il renverra également zéro. Il faudra peut-être l'ajuster un peu.


Cela reviendra cependant 40. Mais plus important encore, n'utilisez pas la fonction ROUND avec RAND ... sinon les première et dernière valeurs auront une probabilité moindre par rapport aux valeurs du milieu.



1
votes

Si vous voulez un nombre qui peut être conçu par 10, utilisez Div puis multipliez par 10

SELECT ((FLOOR (RAND () * (50-10 + 1)) + 10) DIV 10) * 10;


0 commentaires

2
votes

Ce qui suit vous donnera l'un des nombres d'une liste :

SELECT ELT(FLOOR(RAND() * 4) + 1, 10, 20, 30, 50);

Ici 4 est la taille de la liste et un est ajouté puisque ELT est basé sur un .


0 commentaires