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

SQL随机数实例分析

105次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 爽爽影院免费观看 | 亚洲自偷自偷图片在线高清 | 最近免费mv在线观看动漫 | 亚洲和欧美毛片久久久久 | 久久伊人精品一区二区三区 | 欧美一区综合 | 亚洲第一se情网站 | 日本一级视频 | 久久国产精品免费一区 | a级日本乱理伦片免费入口 a级特黄毛片免费观看 | 四虎网址大全 | 久草视频一区 | 亚洲精品久久99久久一 | 韩国一级毛片免费完整视频 | 天天操天天摸天天碰 | 亚洲国产精品欧美日韩一区二区 | 看全色黄大色黄大片 视频 看全色黄大色黄大片毛片 看全色黄大色黄大片色黄看的 | 狠狠躁夜夜躁人人爽天天69 | 一级特黄特交牲大片 | 亚洲一级毛片视频 | 青青草偷拍视频 | 天天干夜夜夜操 | 在线播放国产精品 | 欧美日韩中文字幕久久伊人 | 精品小视频在线 | 国产微拍精品 | 欧美乱妇高清无乱码免费 | a级毛片毛片免费观看久 | 日本一级成人毛片免费观看 | a在线观看视频 | 国产精品99久久久久久久女警 | 欧美日韩在线观看视频 | 国产精品国产三级国产专区50 | 青久在线 | 日本人与黑人做爰视频网站 | 亚洲视频在线免费观看 | 亚洲欧美久久精品1区2区 | 国产一级强片在线观看 | 九九色网 | 久久艹久久 | 先锋欧美|