在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

SQL随机数实例分析

124次阅读
没有评论

共计 2219 个字符,预计需要花费 6 分钟才能阅读完成。

本文丸趣 TV 小编为大家详细介绍“SQL 随机数实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL 随机数实例分析”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。

要得到一个随机数,写 SQL 其实有很多中写法。比如限定数据的范围是 7~12,可以这样写。

mysql SELECT FLOOR(7 + (RAND() * 6));

+————————-+

| FLOOR(7 + (RAND() * 6)) |

+————————-+

| 10 |

+————————-+

1 row in set

比如限定的数据范围是 100 以内,可以这样写。

mysql select truncate(round(rand(),2)*100,0);

+———————————+

| truncate(round(rand(),2)*100,0) |

+———————————+

| 78 |

+———————————+

当然这样只是最基本的实现,还没有考虑到种子函数的影响。

我们暂且抛开实现的复杂度,来看看结合一些场景的不同实现,我临时自造了几个概念,但是意思应该是相通的。

平均随机数

这是一种看起来随机,但是数据分布又可控的方式。

比如 1~100 我生成 10 个数字,我可以每 10 个数字分为 1 组。每组做一个随机。

这样我对 1~10 生成一个随机序列,比如第一个随机数是 2,我就从 20~29 里面选择一个数字,下一数字是 5,则从 50~59 里面选出 1 个数字。

通过这种方式数据的分布方式决定是可控的,但是又保证了随机的特性。

一次性随机数

这类随机数就好比陕西的油泼面一样,简单快捷,一勺油即可搞定。如果我需要 10 个数字,那么我一次就生成 10 个随机数字。

看起来实现有些难,其实还好,使用 rand() 和 limit 即可。

插入 8 条数据。

mysql insert into random values

(1),(2),(40),(30),(20),(9),(15),(21);

Query OK, 8 rows affected

Records: 8 Duplicates: 0 Warnings: 0

默认得到的数据是有序的。

mysql select *from random;

+—-+

| id |

+—-+

| 1 |

| 2 |

| 40 |

| 30 |

| 20 |

| 9 |

| 15 |

| 21 |

+—-+

8 rows in set

使用 rand 来得到一个随机序列。

mysql select *from random order by rand();

+—-+

| id |

+—-+

| 1 |

| 2 |

| 30 |

| 20 |

| 40 |

| 21 |

| 15 |

| 9 |

+—-+

8 rows in set

如果需要截取,就可以使用 limit 了。

mysql select *from random order by rand() limit 4;

+—-+

| id |

+—-+

| 30 |

| 21 |

| 9 |

| 20 |

+—-+

4 rows in set

动态随机数

这类随机数的代价最高,需要反复计算。总之不确定性要高很多,但是随机性更大。

比如对 100 个数中取出 10 个数,我们每取出一个数,就需要把它排除掉,从列表里重新再取,这样如果是连续的数字 1 2 3 也是有可能的。

我们来通过 SQL 来简答模拟一下抽奖的过程。

初始化表数和数据。

create table lucky_money(id int primary key,money int,status smallint);

存储过程如下:

delimiter $$

create procedure proc_init ()

begin

declare

init_data integer default 1;

while init_data =1500 do

insert into lucky_money values(init_data,0,0);

set init_data = init_data +1;

end while;

end $$

delimiter ;

call proc_init();

得到的数据是有序的。即员工号。

| 1497 | 0 | 0 |

| 1498 | 0 | 0 |

| 1499 | 0 | 0 |

| 1500 | 0 | 0 |

+——+——-+——–+

1500 rows in set

我们修改状态,随机得到一些数据的变化。

update lucky_money set money=1000,status=1 order by rand() limit 200;

update lucky_money set money=3000,status=1 where status=0 order by rand() limit 80;

update lucky_money set money=5000,status=1 where status=0 order by rand() limit 20;

所以第一轮之后,平均奖金是 360 元。

mysql select avg(money) from lucky_money;

+————+

| avg(money) |

+————+

| 360.0000 |

+————+

1 row in set

读到这里,这篇“SQL 随机数实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计2219字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产亚洲精品精华液 | 欧美精品一区二区在线观看播放 | 亚洲国产日韩欧美在线 | 性做久久久久 | 校园春色~综合网 | 熟妇五十路六十路息与子 | 黄色在线观看视频免费 | 午夜精品久久久久久久 | 久久99九九国产免费看小说 | 野花在线无码视频在线播放 | 黄色小视频免费在线观看 | www.尤物视频 | 国产成人精品视频午夜 | 91网站视频在线观看 | 好好日网站 | 伊人成人久久 | 亚洲色图另类小说 | 第一毛片 | 一本久道综合色婷婷五月 | av网站的免费观看 | 一道精品视频一区二区三区图片 | 色黄大片女爽一次 | 你懂的网址在线观看 | 性欧美一级毛片在线播放 | 精品欧洲av无码一区二区 | 成人嗯啊视频在线观看 | 国产成+人+综合+亚洲 欧美 | 国产亚洲人成网站天堂岛 | 国产精品欧美亚洲韩国日本 | 香蕉成人 | 亚洲依依成人精品 | 午夜免费观看 | 亚洲国产第一区二区三区 | 久久天天躁狠狠躁夜夜 | 国产欧美色一区二区三区 | 2019中文字幕在线视频 | 欧美日韩综合高清一区二区 | 国产嫖妓一区二区三区无码 | 久久夜色精品国产亚洲 | 欧美喷潮久久久xxxxx | 操干网|