首頁 資料庫 mysql教程 用MySQL里的Rand()生成不连续重复的随机数年龄以及随机姓名字符串_MySQL

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

Jun 01, 2016 pm 01:02 PM
姓名 字串 隨機數

前言:
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)
登入後複製
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>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP中int型別轉字串的方法詳解 PHP中int型別轉字串的方法詳解 Mar 26, 2024 am 11:45 AM

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

怎麼重複字串_python重複字串教程 怎麼重複字串_python重複字串教程 Apr 02, 2024 pm 03:58 PM

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

Golang中如何檢查字串是否以特定字元開頭? Golang中如何檢查字串是否以特定字元開頭? Mar 12, 2024 pm 09:42 PM

Golang中如何檢查字串是否以特定字元開頭?在使用Golang程式設計時,經常會遇到需要檢查一個字串是否以特定字元開頭的情況。針對這項需求,我們可以使用Golang中的strings套件所提供的函數來實現。接下來將詳細介紹如何使用Golang檢查字串是否以特定字元開頭,並附上具體的程式碼範例。在Golang中,我們可以使用strings套件中的HasPrefix

Golang字串是否以指定字元結尾的判斷方法 Golang字串是否以指定字元結尾的判斷方法 Mar 12, 2024 pm 04:48 PM

標題:Golang中判斷字串是否以指定字元結尾的方法在Go語言中,有時候我們需要判斷一個字串是否以特定的字元結尾,這在處理字串時十分常見。本文將介紹如何使用Go語言來實現這項功能,同時提供程式碼範例供大家參考。首先,讓我們來看看Golang中如何判斷一個字串是否以指定字元結尾的方法。 Golang中的字串可以透過索引來取得其中的字符,而字串的長度可

解決PHP中16進位轉字串出現中文亂碼的方法 解決PHP中16進位轉字串出現中文亂碼的方法 Mar 04, 2024 am 09:36 AM

解決PHP中16進位轉字串出現中文亂碼的方法在PHP程式設計中,有時候我們會遇到需要將16進位表示的字串轉換為正常的中文字元的情況。然而,在進行這個轉換的過程中,有時會遇到中文亂碼的問題。這篇文章將為您提供解決PHP中16進位轉字串出現中文亂碼的方法,並給出具體的程式碼範例。使用hex2bin()函數進行16進位轉換PHP內建的hex2bin()函數可以將1

如何在Go語言中截取字串 如何在Go語言中截取字串 Mar 13, 2024 am 08:33 AM

Go語言是一種強大且靈活的程式語言,它提供了豐富的字串處理功能,包括字串截取。在Go語言中,我們可以使用切片(slice)來截取字串。接下來,將詳細介紹如何在Go語言中截取字串,並附上具體的程式碼範例。一、使用切片截取字串在Go語言中,可以使用切片表達式來截取字串的一部分。切片表達式的語法如下:slice:=str[start:end]其中,s

PHP字串比對技巧:避免模糊包含表達式 PHP字串比對技巧:避免模糊包含表達式 Feb 29, 2024 am 08:06 AM

PHP字串比對技巧:避免模糊包含表達式在PHP開發中,字串比對是常見的任務,通常用於尋找特定的文字內容或驗證輸入的格式。然而,有時候我們需要避免使用模糊的包含表達式來確保匹配的準確性。本文將介紹一些在PHP中進行字串匹配時避免模糊包含表達式的技巧,並提供具體的程式碼範例。使用preg_match()函數進行精確比對在PHP中,可以使用preg_mat

PHP字串操作:有效去除空格的實用方法 PHP字串操作:有效去除空格的實用方法 Mar 24, 2024 am 11:45 AM

PHP字串操作:有效去除空格的實用方法在PHP開發中,經常會遇到需要對字串進行去除空格操作的情況。去除空格可以讓字串更加整潔,方便後續的資料處理和顯示。本文將介紹幾種有效的去除空格的實用方法,並附上具體的程式碼範例。方法一:使用PHP內建函數trim()PHP內建函數trim()可以移除字串兩端的空格(包括空格、製表符、換行符等),非常方便且簡單易用

See all articles