Maison base de données tutoriel mysql 用MySQL里的Rand()生成不连续重复的随机数年龄以及随机姓名字符串_MySQL

用MySQL里的Rand()生成不连续重复的随机数年龄以及随机姓名字符串_MySQL

Jun 01, 2016 pm 01:02 PM
Nom 字符串 随机数

前言:
RAND函数,返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
一,朋友问题描述如下:
通过一段存储过程来实现向表里插入100数据,其中年龄随机
(2),然后我写出的代码如下:
-- 创建用户表,在project里
(3),执行结果
call pro3(100); -- 执行过程
二,分析原因

所以存储过程改动如下:

DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `pro3`$$
CREATE PROCEDURE `pro3`(num INT)
BEGIN
DECLARE fname CHAR(1);
DECLARE name1 CHAR(1);
DECLARE name2 CHAR(1);
DECLARE fullname VARCHAR(3);
DECLARE pre_fullname VARCHAR(3) DEFAULT \'\';
DECLARE age INT;
DECLARE i INT DEFAULT 1;
WHILE i 1 THEN
SET i=i;
ELSEIF fullname IS NULL THEN
SET i=i;
ELSE
INSERT INTO user1 VALUES(NULL,fullname,age);
SET i = i + 1;
END IF ;
END WHILE;
END$$
DELIMITER
三,执行改动后的存储过程,查看效果
mysql> DELIMITER $$
mysql> USE `test`$$
Database changed
mysql> DROP PROCEDURE IF EXISTS `pro3`$$
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE PROCEDURE `pro3`(num INT)
-> BEGIN
-> DECLARE fname CHAR(1);
-> DECLARE name1 CHAR(1);
-> DECLARE name2 CHAR(1);
-> DECLARE fullname VARCHAR(3);
-> DECLARE pre_fullname VARCHAR(3) DEFAULT \'\';
-> DECLARE age INT;
-> DECLARE i INT DEFAULT 1;
-> WHILE i  SET fname = SUBSTRING(\'赵钱孙李周吴郑王\',FLOOR(1+8*RAND()),1);
-> SET name1 = SUBSTRING(\'一二三四五六七八九十甲乙丙丁\',ROUND(1+14*RAND()),1);
-> SET name2 = SUBSTRING(\'一二三四五六七八九十甲乙丙丁\',ROUND(1+14*RAND()),1);
->
-> IF ROUND(RAND())=0 THEN
-> SET fullname = CONCAT(fname,name1);
-> END IF;
-> IF ROUND(RAND())=1 THEN
-> SET fullname = CONCAT(fname,name1,name2);
-> END IF;
->
-> SET age = FLOOR(20+31*RAND());
-> /* 给临时变量赋值,看最新的一条记录的name值 */
-> SELECT NAME INTO pre_fullname FROM user1 ORDER BY id DESC LIMIT 1;
-> /* 开始判断,如果刚赋值的name跟上一次赋值的name值一样,就跳过,i保持不变,继续取值;否则i+1,继续循环取值*/
-> IF fullname=pre_fullname AND i>1 THEN
->
Display all 799 possibilities? (y or n)
-> SET i=i;
-> ELSEIF fullname IS NULL THEN
->
Display all 799 possibilities? (y or n)
-> SET i=i;
Display all 799 possibilities? (y or n)
-> SET i=i;
-> ELSE
->
Display all 799 possibilities? (y or n)
-> INSERT INTO user1 VALUES(NULL,fullname,age);
->
Display all 799 possibilities? (y or n)
-> SET i = i + 1;
-> END IF ;
-> END WHILE;
-> END$$
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql>
mysql> truncate table user1;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from user1;
Empty set (0.00 sec)

mysql> call pro3(100);
Query OK, 1 row affected (0.11 sec)

mysql> select * from user1;
+-----+-----------+-----+
| id | name | age |
+-----+-----------+-----+
| 1 | 吴甲九 | 32 |
| 2 | 赵丙 | 49 |
| 3 | 钱二 | 40 |
| 4 | 郑二丙 | 34 |
| 5 | 孙四三 | 39 |
| 6 | 钱五十 | 39 |
| 7 | 赵五 | 23 |
| 8 | 郑九 | 22 |
| 9 | 钱九七 | 47 |
| 10 | 郑七乙 | 39 |
| 11 | 孙丙二 | 44 |
| 12 | 吴三九 | 30 |
| 13 | 钱九四 | 28 |
| 14 | 王十九 | 49 |
| 15 | 周丙乙 | 43 |
| 16 | 王十 | 33 |
| 17 | 钱乙七 | 36 |
| 18 | 赵七四 | 32 |
| 19 | 郑八二 | 31 |
| 20 | 赵二 | 35 |
| 21 | 赵丙 | 26 |
| 22 | 郑甲丁 | 38 |
| 23 | 周丙九 | 50 |
| 24 | 李丙五 | 27 |
| 25 | 李五三 | 37 |
| 26 | 孙丙六 | 46 |
| 27 | 钱八 | 37 |
| 28 | 周七六 | 40 |
| 29 | 李一一 | 45 |
| 30 | 钱十七 | 22 |
| 31 | 吴七一 | 49 |
| 32 | 吴丙六 | 39 |
| 33 | 吴四四 | 50 |
| 34 | 郑八丙 | 28 |
| 35 | 吴五七 | 26 |
| 36 | 吴甲 | 46 |
| 37 | 钱四 | 39 |
| 38 | 王丙九 | 24 |
| 39 | 王八八 | 38 |
| 40 | 吴乙丙 | 35 |
| 41 | 吴丙七 | 39 |
| 42 | 周甲丁 | 31 |
| 43 | 钱二甲 | 25 |
| 44 | 钱五丁 | 32 |
| 45 | 孙四二 | 28 |
| 46 | 李七丙 | 37 |
| 47 | 钱七七 | 46 |
| 48 | 郑乙四 | 33 |
| 49 | 钱甲丁 | 34 |
| 50 | 王五 | 37 |
| 51 | 吴一 | 44 |
| 52 | 王二十 | 33 |
| 53 | 郑四 | 41 |
| 54 | 钱九八 | 29 |
| 55 | 李十十 | 24 |
| 56 | 钱六七 | 44 |
| 57 | 王二 | 38 |
| 58 | 周五 | 36 |
| 59 | 吴九 | 44 |
| 60 | 赵丙 | 38 |
| 61 | 李五五 | 20 |
| 62 | 王八乙 | 33 |
| 63 | 王丙八 | 49 |
| 64 | 王九六 | 38 |
| 65 | 钱七 | 45 |
| 66 | 赵二二 | 36 |
| 67 | 钱五乙 | 40 |
| 68 | 孙甲七 | 43 |
| 69 | 郑甲五 | 47 |
| 70 | 赵丙 | 20 |
| 71 | 郑四 | 43 |
| 72 | 孙丙五 | 24 |
| 73 | 孙三 | 33 |
| 74 | 赵四乙 | 31 |
| 75 | 李 | 44 |
| 76 | 吴九丁 | 43 |
| 77 | 郑甲一 | 33 |
| 78 | 李三五 | 37 |
| 79 | 王二 | 31 |
| 80 | 赵七丙 | 35 |
| 81 | 吴三十 | 22 |
| 82 | 李二 | 50 |
| 83 | 李八 | 49 |
| 84 | 王一 | 27 |
| 85 | 王三 | 22 |
| 86 | 周五 | 45 |
| 87 | 郑八 | 44 |
| 88 | 郑甲二 | 48 |
| 89 | 赵乙 | 37 |
| 90 | 周四五 | 30 |
| 91 | 周二七 | 41 |
| 92 | 孙四 | 21 |
| 93 | 周丙七 | 24 |
| 94 | 孙丁乙 | 32 |
| 95 | 周九一 | 20 |
| 96 | 周九 | 32 |
| 97 | 赵二一 | 26 |
| 98 | 周丁五 | 47 |
| 99 | 孙三 | 38 |
| 100 | 吴十四 | 29 |
+-----+-----------+-----+
100 rows in set (0.00 sec)
Copier après la connexion
mysql>从中看到已经连续100个随机数中,没有出现连续重复的姓名和年龄。
四,RAND()与RAND(N)区别
每个种子产生的随机数序列是不同的,如果传入N参数执行RAND(N),则每次查询到的随机数都是固定的,如果没有传入N参数,则每次都是随机的值。如下所示:
mysql> SELECTRAND(),RAND(5);
+--------------------+---------------------+
| RAND() | RAND(5) |
+--------------------+---------------------+
| 0.7946587333405938 | 0.40613597483014313 |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(),RAND(5);
+---------------------+---------------------+
| RAND() | RAND(5) |
+---------------------+---------------------+
| 0.12910866749389904 | 0.40613597483014313 |
+---------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(),RAND(5);
+-------------------+---------------------+
| RAND() | RAND(5) |
+-------------------+---------------------+
| 0.261567168181359 | 0.40613597483014313 |
+-------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(),RAND(5);
+--------------------+---------------------+
| RAND() | RAND(5) |
+--------------------+---------------------+
| 0.9205098691587428 | 0.40613597483014313 |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(),RAND(5);
+--------------------+---------------------+
| RAND() | RAND(5) |
+--------------------+---------------------+
| 0.8178478719832821 | 0.40613597483014313 |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql>
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Explication détaillée de la méthode de conversion du type int en chaîne en PHP Mar 26, 2024 am 11:45 AM

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Dans le développement PHP, nous rencontrons souvent le besoin de convertir le type int en type chaîne. Cette conversion peut être réalisée de différentes manières. Cet article présentera en détail plusieurs méthodes courantes, avec des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Utilisez la fonction intégrée strval() de PHP. PHP fournit une fonction intégrée strval() qui peut convertir des variables de différents types en types de chaîne. Lorsque nous devons convertir le type int en type chaîne,

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Mar 12, 2024 pm 09:42 PM

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Lors de la programmation en Golang, vous rencontrez souvent des situations où vous devez vérifier si une chaîne commence par un caractère spécifique. Pour répondre à cette exigence, nous pouvons utiliser les fonctions fournies par le package strings dans Golang pour y parvenir. Ensuite, nous présenterons en détail comment utiliser Golang pour vérifier si une chaîne commence par un caractère spécifique, avec des exemples de code spécifiques. En Golang, nous pouvons utiliser HasPrefix du package strings

Comment déterminer si une chaîne Golang se termine par un caractère spécifié Comment déterminer si une chaîne Golang se termine par un caractère spécifié Mar 12, 2024 pm 04:48 PM

Titre : Comment déterminer si une chaîne se termine par un caractère spécifique en Golang. Dans le langage Go, nous devons parfois déterminer si une chaîne se termine par un caractère spécifique. Ceci est très courant lors du traitement de chaînes. Cet article explique comment utiliser le langage Go pour implémenter cette fonction et fournit des exemples de code pour votre référence. Voyons d’abord comment déterminer si une chaîne se termine par un caractère spécifié dans Golang. Les caractères d'une chaîne dans Golang peuvent être obtenus par indexation, et la longueur de la chaîne peut être

Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Apr 02, 2024 pm 03:58 PM

1. Ouvrez d’abord pycharm et accédez à la page d’accueil de pycharm. 2. Créez ensuite un nouveau script python, cliquez avec le bouton droit sur nouveau - cliquez sur fichier python. 3. Entrez une chaîne, code : s="-". 4. Ensuite, vous devez répéter les symboles de la chaîne 20 fois, code : s1=s*20 5. Entrez le code de sortie d'impression, code : print(s1). 6. Enfin, exécutez le script et vous verrez notre valeur de retour en bas : - répété 20 fois.

Comment résoudre le problème des caractères chinois tronqués lors de la conversion d'hexadécimaux en chaîne en PHP Comment résoudre le problème des caractères chinois tronqués lors de la conversion d'hexadécimaux en chaîne en PHP Mar 04, 2024 am 09:36 AM

Méthodes pour résoudre le problème des caractères chinois tronqués lors de la conversion de chaînes hexadécimales en PHP. Dans la programmation PHP, nous rencontrons parfois des situations où nous devons convertir des chaînes hexadécimales en caractères chinois normaux. Cependant, au cours du processus de conversion, vous rencontrerez parfois le problème des caractères chinois tronqués. Cet article vous fournira une méthode pour résoudre le problème des caractères chinois tronqués lors de la conversion de caractères hexadécimaux en chaîne en PHP, et donnera des exemples de code spécifiques. Utilisez la fonction hex2bin() pour la conversion hexadécimale. La fonction hex2bin() intégrée de PHP peut convertir 1.

Conseils de correspondance de chaînes PHP : évitez les expressions incluses ambiguës Conseils de correspondance de chaînes PHP : évitez les expressions incluses ambiguës Feb 29, 2024 am 08:06 AM

Conseils pour la correspondance de chaînes PHP : évitez les expressions incluses ambiguës Dans le développement PHP, la correspondance de chaînes est une tâche courante, généralement utilisée pour rechercher un contenu de texte spécifique ou pour vérifier le format d'entrée. Cependant, nous devons parfois éviter d'utiliser des expressions d'inclusion ambiguës pour garantir l'exactitude de la correspondance. Cet article présentera quelques techniques pour éviter les expressions d'inclusion ambiguës lors de la correspondance de chaînes en PHP et fournira des exemples de code spécifiques. Utilisez la fonction preg_match() pour une correspondance exacte. En PHP, vous pouvez utiliser preg_mat

Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Mar 24, 2024 am 11:45 AM

Opération de chaîne PHP : une méthode pratique pour supprimer efficacement les espaces Dans le développement PHP, vous rencontrez souvent des situations dans lesquelles vous devez supprimer des espaces d'une chaîne. La suppression des espaces peut rendre la chaîne plus propre et faciliter le traitement et l'affichage ultérieurs des données. Cet article présentera plusieurs méthodes efficaces et pratiques pour supprimer des espaces et joindra des exemples de code spécifiques. Méthode 1 : utilisez la fonction intégrée PHP trim() La fonction intégrée PHP trim() peut supprimer les espaces aux deux extrémités de la chaîne (y compris les espaces, les tabulations, les nouvelles lignes, etc.), ce qui est très pratique et simple. utiliser.

Techniques PHP pour supprimer les deux derniers caractères d'une chaîne Techniques PHP pour supprimer les deux derniers caractères d'une chaîne Mar 23, 2024 pm 12:18 PM

En tant que langage de script largement utilisé pour développer des applications Web, PHP dispose de fonctions de traitement de chaînes très puissantes. Dans le développement quotidien, nous rencontrons souvent des opérations qui nécessitent la suppression d'une chaîne, notamment les deux derniers caractères de la chaîne. Cet article présentera deux techniques PHP pour supprimer les deux derniers caractères d'une chaîne et fournira des exemples de code spécifiques. Astuce 1 : Utilisez la fonction substr La fonction substr en PHP est utilisée pour renvoyer une partie d'une chaîne. Nous pouvons facilement supprimer des caractères en spécifiant la chaîne et la position de départ

See all articles